从Excel中读取图像并将其存储在sqlserver中

我有一个名为“tab1”的表

cl_id int //auto imcrement cl_image image 

我想从图像excel中读取图像,并将其存储在上表中

 FileInputStream fileInputStream = new FileInputStream( "Delux.xls"); System.out.println(fileInputStream); HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream); HSSFSheet worksheet = workbook.getSheet("Delux"); Iterator rows = worksheet.rowIterator(); HSSFRow row = (HSSFRow) rows.next(); List lst = workbook.getAllPictures(); Iterator it = lst.iterator(); while (rows.hasNext()) { row = (HSSFRow) rows.next(); //reading the image from excel HSSFCell cellP1 = row.getCell((short) 1); PictureData pict = (PictureData)it.next(); String ext = pict.suggestFileExtension(); byte[] data = pict.getData(); InputStream is = new ByteArrayInputStream(data); try { PreparedStatement stmt = getdbconn() .prepareStatement( "insert into tab1 (cl_image) values(?)"); stmt.setBinaryStream(1, is); stmt.executeUpdate(); is.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } 

但是当我存储图像dynamic我得到的错误

“string或二进制数据将被截断”。

任何人都可以build议我一个方法来实现这个?

像IMAGE和TEXT数据types不会被支持,他们已被弃用。 所以更改为VARBINARY(最大)。最重要的是导入的东西是IMAGE数据types需要存储的大小在一个特殊的方式,而不是扩大VARBINARY迎合任何东西一路到2GB。 你得到的错误是因为图像不适合cl_image字段。