![](/img/trans.png)
[英]Generate Data Export SQL File Using Liquibase via Java API
[英]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.