繁体   English   中英

使用Java从SQL Server导出二进制数据

[英]Using Java to Export Binary Data from SQL Server

我有一个包含7500条记录的数据库表。 我正在尝试编写可以将所有7500 jpg图像导出到我的笔记本电脑上的文件夹并根据EMPID + TYPE命名的内容。

在此输入图像描述

因此blob将在第一行命名为1008421_0.jpg

我在想这样的事情,但我如何命名每张图片?

String filePath = "C:/Photos/";
 try {
        Connection conn = DriverManager.getConnection(url);

        String sql = "SELECT * FROM MMOBJ WHERE EMPID > 1 ";
        PreparedStatement statement = conn.prepareStatement(sql);

        ResultSet result = statement.executeQuery();
        while (result.next()) {
            Blob blob = result.getBlob("photo");
            InputStream inputStream = blob.getBinaryStream();
            OutputStream outputStream = new FileOutputStream(filePath);

            int bytesRead = -1;
            byte[] buffer = new byte[BUFFER_SIZE];
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }

            inputStream.close();
            outputStream.close();

我不确定我是否理解你的问题...请在下次再说明一点。

事实上,您确实需要为每一行进行循环迭代。 我建议用while (result.next())交换if (result.next()) while (result.next()) 此外,您的filePath似乎是常量,但如果我对您的问题的理解是正确的,则应该依赖于EMPID

最后,不要忘记关闭Statement和/或ResultSet以避免资源泄漏。

我研究了如何使用它来更改每行的文件名。

ResultSet result = statement.executeQuery();
        while (result.next()) {
            Blob blob = result.getBlob("LNL_BLOB");
            String name = result.getString("EMPID");
            InputStream inputStream = blob.getBinaryStream();
            OutputStream outputStream = new FileOutputStream(filePath+name+".jpg");

谢谢你的协助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM