我想从Java项目中操作Microsoft Access数据库(.accdb或.mdb文件)。我不想使用来自Microsoft的JDBC-ODBC桥和Access ODBC驱动程序,因为:
- JDBC-ODBC网桥已从Java SE 8中删除,不受支持(参考:此处)
- 当文本包含代码点高于U+00FF(参考:此处)的Unicode字符时,JDBC-ODBC桥无法与Access ODBC驱动程序一起正常工作,因此这种设置将无法处理希腊语、俄语、汉语、阿拉伯语等字符
- Microsoft的Access ODBC驱动程序仅在Windows中工作,并且
- Access数据库引擎(和ODBC驱动程序)有单独的32位和64位版本,这可能会妨碍部署
我还看到其他答案提到了一个名为UCanAccess的Access数据库JDBC驱动程序。如何设置Java项目以使用这种方法
(建议从Java使用Access数据库的更好方法的答案也是最受欢迎的。)
UCanAccess是一个纯javajdbc驱动程序,它允许我们在不使用ODBC的情况下对数据库进行读写访问。它使用另外两个包Jackcess和HSQLDB来执行这些任务。下面是如何设置它的简要概述
 
选项1:使用Maven
如果您的项目使用Maven,您可以通过以下坐标简单地包括UCanAccess:
groupId:net.sf.ucanaccess
artifactId:ucanaccess
以下是pom.xml的摘录,您可能需要更新<;版本>获取最新版本:
<;依赖关系>;
<;依赖性>;
<;groupId>;净sf.ucanaccess</groupId>;
<;artifactId>;ucanaccess</artifactId>;
<;版本>;4.0.4</版本>;
</依赖性>;
</依赖关系>;
 
选项2:手动将JAR添加到项目中
如上所述,UCanAccess需要Jackcess和HSQLDB。Jackcess也有自己的依赖项。因此,要使用UCanAccess,您需要包括以下组件:
UCanAccess(UCanAccess-x.x.jar)
HSQLDB(HSQLDB.jar,版本2.2.5或更高版本)
Jackcess(Jackcess-2.x.x.jar)
commons-lang(commons-lang-2.6.jar或更新的2.x版本)
commons日志(commons-logging-1.1.1.jar或更新的1.x版本)
幸运的是,UCanAccess在其分发文件中包含了所有必需的JAR文件。当您解压缩它时,您将看到类似的内容
ucanaccess-4.0.1.jar
/解放党/
commons-lang-2.6.jar
commons-logging-1.1.1.jar
hsqldb.jar
jackcess-2.1.6.jar
您只需将所有五(5)个罐子添加到您的项目中即可
注意:如果要添加其他五(5)个jar文件,请不要将
loader/ucanload.jar添加到构建路径中。UCANLOADDRIVE类仅在特殊情况下使用,需要不同的设置。有关详细信息,请参见此处的相关答案
Eclipse:在包资源管理器中右键单击项目,然后选择buildpath>;配置生成路径…。单击“添加外部罐子…”按钮添加五(5)个罐子中的每一个。完成后,Java构建路径应该如下所示
NetBeans:展开项目的树视图,右键单击“库”文件夹并选择“添加JAR/文件夹…”,然后浏览到JAR文件
添加所有五(5)个JAR文件后,“Libraries”文件夹应如下所示:
IntelliJ IDEA:选择文件>;项目结构…从主菜单。在“库”窗格中,单击“添加”(++)按钮并添加五(5)个JAR文件。完成后,项目应如下所示:
 
就这样
现在,您可以使用下面的代码访问.accdb和.mdb文件中的数据
//假设。。。
//导入java.sql.*;
连接连接=DriverManager.getConnection(
“jdbc:ucanaccess://C:/_tmp/test/zzz.accdb”);
语句s=conn.createStatement();
ResultSet rs=s.executeQuery(“从[客户端]on选择[姓氏]”;
while(rs.next()){
System.out.println(rs.getString(1));
}
 
披露
在撰写本问答时;A我没有参与UCanAccess项目,也没有参与UCanAccess项目;我刚用过。从那以后,我成为了这个项目的一名贡献者