JDBC-ODBC桥已从Java SE 8中删除,并且不受支持( ref:此处),
当文本包含代码点超过U + 00FF的Unicode字符时,JDBC-ODBC Bridge不能与Access ODBC驱动程序一起正常工作(ref:此处),因此这种设置将无法可处理诸如希腊语,俄语,中文,阿拉伯语等字符。
Microsoft的Access ODBC驱动程序仅在Windows中有效,并且
有单独的32位和64位版本的Access数据库引擎(和ODBC驱动程序)可能会对部署造成麻烦。
我看到了其他答案,其中提到了名为UCanAccess的Access数据库的JDBC驱动程序。如何设置我的Java项目以使用这种方法?
(最好也建议使用Java来访问Access数据库的更好方法。)
#1 楼
UCanAccess是纯Java JDBC驱动程序,它使我们无需使用ODBC即可读写Access数据库。它使用另外两个软件包Jackcess和HSQLDB来执行这些任务。下面是有关如何进行设置的简要概述。方法1:使用Maven
如果您的项目使用Maven,则可以只需通过以下坐标包含UCanAccess:
groupId:net.sf.ucanaccessartifactId:ucanaccess
以下是
pom.xml
的摘录,您可能需要更新<version>
才能获得最新版本: <dependencies>
<dependency>
<groupId>net.sf.ucanaccess</groupId>
<artifactId>ucanaccess</artifactId>
<version>4.0.4</version>
</dependency>
</dependencies>
选项2:手动将JAR添加到您的项目中
如上所述,UCanAccess需要Jackcess和HSQLDB。反过来,Jackcess也有其自己的依赖性。因此,要使用UCanAccess,您将需要包括以下组件:
UCanAccess(ucanaccess-xxxjar)HSQLDB(hsqldb.jar,版本2.2.5或更高版本)Jackcess(jackcess-2.xxjar) commons-lang(commons-lang-2.6.jar或更高版本2.x版本)commons-logging(commons-logging-1.1.1.jar或更高版本1.x版本)
UCanAccess在其分发文件中包含所有必需的JAR文件。解压缩后,您会看到类似
ucanaccess-4.0.1.jar
/lib/
commons-lang-2.6.jar
commons-logging-1.1.1.jar
hsqldb.jar
jackcess-2.1.6.jar
的所有内容所有五(5)个JAR文件都添加到项目中。
注意:如果要添加其他五(5)个JAR文件,请不要在构建路径中添加
loader/ucanload.jar
。 UcanloadDriver
类仅在特殊情况下使用,并且需要不同的设置。有关详细信息,请参见此处的相关答案。Eclipse:在Package Explorer中右键单击该项目,然后选择
Build Path > Configure Build Path...
。单击“添加外部JAR ...”按钮以添加五(5)个JAR。完成后,您的Java Build Path应该看起来像这样NetBeans:展开项目的树形视图,右键单击“库”文件夹,然后选择“添加JAR /文件夹...”,然后浏览到JAR文件。
添加所有五(5)个JAR文件后,“库”文件夹应如下所示:
IntelliJ IDEA:从主菜单中选择
File > Project Structure...
。在“库”窗格中,单击“添加”(+
)按钮,然后添加五(5)个JAR文件。完成后,项目应如下所示:就这样!
现在“ U可以使用这样的代码访问.accdb和.mdb文件中的数据
// assumes...
// import java.sql.*;
Connection conn=DriverManager.getConnection(
"jdbc:ucanaccess://C:/__tmp/test/zzz.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT [LastName] FROM [Clients]");
while (rs.next()) {
System.out.println(rs.getString(1));
}
披露
在撰写本问答时,我没有参与或与UCanAccess项目有任何关系。我刚用过从那以后,我成为该项目的贡献者。
评论
您与此图书馆有任何隶属关系吗?如果这样做,可能值得披露。
–乔
2014年2月22日15:10
您可以使用它连接到Java 8中的Excel工作簿(.xlsx)吗?
– steinbitur
2014年5月4日13:54
@sємsєм驱动程序类是net.ucanaccess.jdbc.UcanaccessDriver
–汤普森(Gord Thompson)
2014-09-26 14:06
@GordThompson这是一个很好的答案。我的整个班级都被这个问题困扰,认为它是文件系统特权错误。帮助我进行装载,并且花了令人惊讶的大量挖掘才意识到Oracle完全摆脱了Java 8的JDBC-ODBC桥。
–wilbomc
15年1月22日在1:23
如何通过Hibernate和Spring将UcanAcces数据源集成到JPA?
–沃伦·诺科斯(Warren Nocos)
2015年10月7日11:00
评论
戈德,我想与您联系。电子邮件地址,可以吗?干杯您也可以在jre8中使用来自jre7的jdbc odbc类-请参见stackoverflow.com/a/34617075/2110961