java - 从excel中读取图像并将其存储在sql server中

标签 java excel sql-server-2008

我有一个名为“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/

相关文章:

java - 运行 android Instrumentation 测试时为 "Cannot determine expansion folder"

vba - 如何在带有嵌套 If 循环的 Excel VBA For 循环中提高性能?

c# - 在 C# 中检索 SQL Server 输出变量

vba - Excel VBA For-Loop 仅在 Debug模式下运行

c# - 杀死 Excel 或 Csv 文件上的锁

sql - 在表1中查找表2中不存在的记录并返回所有字段

sql - 不允许从数据类型 varchar 隐式转换为 varbinary。使用 CONVERT 函数运行此查询

java - Intellij 灯泡

java - 如何使用 Maven 将 jar 部署到 S3?

Java:安全套接字接受