不使用ODBC从Java操作Access数据库

我想从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来执行这些任务。下面是如何设置它的简要概述

&nbsp

选项1:使用Maven

如果您的项目使用Maven,您可以通过以下坐标简单地包括UCanAccess:

groupId:net.sf.ucanaccess
artifactId:ucanaccess

以下是pom.xml的摘录,您可能需要更新<版本&gt获取最新版本:

<依赖关系>
<依赖性>
<groupId>净sf.ucanaccess&lt/groupId>
<artifactId>ucanaccess&lt/artifactId>
<版本>4.0.4&lt/版本>
&lt/依赖性>
&lt/依赖关系>

&nbsp

选项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文件。完成后,项目应如下所示:

&nbsp

就这样

现在,您可以使用下面的代码访问.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));
}

&nbsp

披露

在撰写本问答时;A我没有参与UCanAccess项目,也没有参与UCanAccess项目;我刚用过。从那以后,我成为了这个项目的一名贡献者

发表评论