我有一个包含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();
答案 0 :(得分:0)
我不确定我是否理解你的问题...下次请更具体。
事实上,您确实需要为每一行进行循环迭代。我建议将if (result.next())
与while (result.next())
进行交换。
此外,您的filePath
似乎是不变的,但如果我对您的问题的理解是正确的,则应依赖于EMPID
。
最后,请勿忘记关闭Statement
和/或ResultSet
以避免资源泄漏。
答案 1 :(得分:0)
我研究了如何使用此更改每行的文件名。
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");
感谢您的协助。