gpt4 book ai didi

java - 如何通过 JDBC 从 MS Access "Attachment"字段检索文件?

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:17 25 4
gpt4 key购买 nike

我编写了一个小型 Java 应用程序来从 Access 2007 数据库读取数据。我可以读取所有字段,但不能读取包含照片的字段。字段类型为“附件”。

当我调用 ResultSet 对象的 .getBlob() 方法时,我捕获了“UnsupportedOperationException”。

根据几个网站的建议,我尝试调用 .getBytes().getBinaryStream() 方法,但两者都只返回附件的文件名,而不返回其内容。

最佳答案

UCanAccess JDBC 驱动程序可以从 Access 数据库中的附件字段中提取文件。对于名为 [AttachmentsTable] 的表

ID - 自动编号、主键
描述 - 文本(255)
附件 - 附件

以下代码将提取 ID=1 的记录的 [附件] 字段中的所有文件:

import java.io.File;
import java.sql.*;
import net.ucanaccess.complex.Attachment;

...

String dbFileSpec = "C:/Users/Public/AttachmentsDB.accdb";
String connStr = "jdbc:ucanaccess://" + dbFileSpec;
try (Connection conn = DriverManager.getConnection(connStr)) {
try (Statement s = conn.createStatement()) {
try (ResultSet rs = s.executeQuery(
"SELECT Attachments FROM AttachmentsTable WHERE ID=1")) {
rs.next();
// retrieve array of net.ucanaccess.complex.Attachment objects
Attachment[] atts = (Attachment[]) rs.getObject(1);
for (Attachment att : atts) {
System.out.println(att.getName());
org.apache.commons.io.FileUtils.writeByteArrayToFile(
new File("C:/Users/Gord/Desktop/" + att.getName()),
att.getData());
}
}
}
}

有关使用 UCanAccess JDBC 驱动程序的更多信息,请参阅

Manipulating an Access database from Java without ODBC

关于java - 如何通过 JDBC 从 MS Access "Attachment"字段检索文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com