当前位置: 首页 > 知识库问答 >
问题:

在没有ODBC的情况下从Java操作Access数据库

姜锋
2023-03-14
    null

我看到过其他答案,提到了一个名为UCANAccess的Access数据库的JDBC驱动程序。如何设置Java项目以使用这种方法?

(建议从Java使用Access数据库的更好方法的答案也是最受欢迎的。)

共有1个答案

徐柏
2023-03-14

UCanAccess是一个纯Java JDBC驱动程序,它允许我们在不使用ODBC的情况下读写访问数据库。它使用另外两个包Jackcess和HSQLDB来执行这些任务。下面是如何设置它的简要概述。

 

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

groupid:net.sf.ucanaccess
artifactid:ucanaccess

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

  <dependencies>
    <dependency>
        <groupId>net.sf.ucanaccess</groupId>
        <artifactId>ucanaccess</artifactId>
        <version>4.0.4</version>
    </dependency>
  </dependencies>

 

UCanAccess(UCanAccess-x.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-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...。单击“添加外部jars...”按钮添加五(5)个罐子中的每一个。完成之后,Java构建路径应该如下所示

NetBeans:展开项目的树视图,右键单击“Libraries”文件夹并选择“Add JAR/folder...”,然后浏览到JAR文件。

在添加了所有五(5)个JAR文件之后,“Libraries”文件夹应该如下所示:

IntelliJ想法:从主菜单中选择文件>项目结构...。在“Libraries”窗格中,单击“add”(+)按钮并添加五(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));
}

 

 类似资料:
  • 问题内容: 我想从我的Java项目中操作Microsoft Access数据库(.accdb或.mdb文件)。我不想使用Microsoft的JDBC-ODBC Bridge和Access ODBC驱动程序,因为: JDBC-ODBC Bridge已从Java SE 8中删除,并且不受支持(参考:here), 当文本包含代码点在U + 00FF以上的Unicode字符时,JDBC-ODBC Brid

  • 问题内容: 我在Android应用程序上使用Firebase,我知道如何使用EventListener从数据库中获取数据。到目前为止。 我的问题是:我有一个ReciclerView,它显示数据中的信息,但仅当我修改数据库时才显示。如果我关闭该应用程序然后再次打开,它什么也不会显示。然后,我进行一些修改,并将所有元素显示在容器中。 有什么方法可以加载数据而无需等待事件,而是手动获取? 先感谢您。 更

  • 本文向大家介绍go语言通过odbc操作Access数据库的方法,包括了go语言通过odbc操作Access数据库的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言通过odbc操作Access数据库的方法。分享给大家供大家参考。具体如下: 这里需要用到go-odbc库,下载地址为:https://github.com/weigj/go-odbc 希望本文所述对大家的Go语言程序设

  • 我正在使用一个房间数据库来运行一些繁重的数据库操作。我没有使用LiveData进行此操作,因为我只将结果用于计算。如果在我的主要片段中 我得到一个如果忽略数据库查询,就不会得到这些工作。 这里的一些答案(比如这个或那个)似乎建议在IO线程上运行查询,比如 注意:Room使用自己的dispatcher在后台线程上运行查询。您的代码不应该使用withContext(Dispatchers.io)来调用

  • 我需要从起始偏移量到结束偏移量读取一组记录。我使用专用Kafka消费品。我至少同意一次语义(在这种情况下,如果给定的应用程序实例宕机,新的应用程序实例从该起始偏移量重新读取记录)。 那么,我可以使用这样的代码吗? 因此: 我没有 是正确的代码吗?或者它有一些隐藏的问题?

  • 问题内容: 已知的 给定 存在来自的受保护构造函数。 题: 给定一个目标,有没有办法建立一个没有经历的对象,? 语境 我正在玩像TeX这样的渲染算法。我需要计算 .pfb文件中各种字符的边界框等。我可以从 .pfb文件构造一个Font对象。我需要一个对象来获得上升,下降和宽度。对我来说,必须构造一个未使用的中间Graphics对象只是一个丑陋的尝试。 问题答案: 给定一个目标,有没有办法建立一个没