一尘不染

在不使用ODBC的情况下从Java操作Access数据库?

java Access ODBC

我想从我的Java项目中操作Microsoft Access数据库(.accdb或.mdb文件)。我不想使用Microsoft的JDBC-ODBC Bridge和Access ODBC驱动程序,因为:

  • JDBC-ODBC Bridge已从Java SE 8中删除,并且不受支持(参考:here),
    当文本包含代码点在U + 00FF以上的Unicode字符时,JDBC-ODBC Bridge不能与Access ODBC驱动程序一起正常使用(参考:here),因此这样的设置将无法处理希腊语,俄语,中文等字符,阿拉伯语等,
  • Microsoft的Access ODBC驱动程序仅适用于Windows,并且
    Access数据库引擎(和ODBC驱动程序)有单独的32位和64位版本,可能会对部署造成麻烦。
    我看到了其他答案,其中提到了名为UCanAccess的Access数据库的JDBC驱动程序。如何设置Java项目以使用这种方法?

(回答建议最好的方法是使用Java处理Access数据库也将受到欢迎。)


阅读 712

收藏
2020-01-10

共1个答案

一尘不染

UCanAccess是一个纯Java JDBC驱动程序,它使我们无需使用ODBC即可读写Access数据库。它使用其他两个软件包JackcessHSQLDB来执行这些任务。以下是有关如何进行设置的简要概述。

选项1:使用Maven

如果你的项目使用Maven,则可以通过以下坐标简单地包含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添加到你的项目中。

2020-01-10