我有一个名为“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();
}
}
但是当我动态存储图像时,我得到了这样的错误
"String or binary data would be truncated".
任何人都可以建议我实现此目标的方法吗???
最佳答案
IMAGE 和 TEXT 等数据类型将不再受支持,它们已被弃用。 因此,将其更改为 VARBINARY(max)。最重要的是 IMAGE 数据类型需要以特殊方式存储大小,而不是扩展 VARBINARY 以满足一直到 2GB 的任何需求。您收到的错误是因为图像不适合 cl_image 字段而引发的。
关于java - 从excel中读取图像并将其存储在sql server中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32880893/