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

如何用Java8连接MS Access数据库?

汪兴为
2023-03-14

我想做的是:

C:/Users/dave/My_WorkSpace/Eclipse_Workspaces/workspace-jsp/Database11.accdb"

>

  • mysql-connector-java-5.1.35-bin.jar

    UCANAccess-2.095.jar

    Jackcess-2.1.2.jar

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/builder/CompareToBuilder
    at com.healthmarketscience.jackcess.impl.RowIdImpl.compareTo(RowIdImpl.java:106)
    at com.healthmarketscience.jackcess.impl.IndexData$Entry.compareTo(IndexData.java:2039)
    at com.healthmarketscience.jackcess.impl.IndexData$Entry.compareTo(IndexData.java:1847)
    at java.util.Collections.indexedBinarySearch(Unknown Source)
    at java.util.Collections.binarySearch(Unknown Source)
    at com.healthmarketscience.jackcess.impl.IndexData$DataPage.findEntry(IndexData.java:2570)
    at com.healthmarketscience.jackcess.impl.IndexData.findEntryPosition(IndexData.java:844)
    at com.healthmarketscience.jackcess.impl.IndexData.access$3700(IndexData.java:47)
    at com.healthmarketscience.jackcess.impl.IndexData$EntryCursor.updatePosition(IndexData.java:2335)
    at com.healthmarketscience.jackcess.impl.IndexData$EntryCursor.restorePosition(IndexData.java:2273)
    at com.healthmarketscience.jackcess.impl.IndexData$EntryCursor.restorePosition(IndexData.java:2256)
    at com.healthmarketscience.jackcess.impl.IndexData$EntryCursor.beforeEntry(IndexData.java:2218)
    at com.healthmarketscience.jackcess.impl.IndexCursorImpl.findPotentialRow(IndexCursorImpl.java:376)
    at com.healthmarketscience.jackcess.impl.IndexCursorImpl.findFirstRowByEntryImpl(IndexCursorImpl.java:282)
    at com.healthmarketscience.jackcess.impl.IndexCursorImpl.findFirstRowByEntry(IndexCursorImpl.java:153)
    at com.healthmarketscience.jackcess.impl.DatabaseImpl$DefaultTableFinder.findRow(DatabaseImpl.java:2074)
    at com.healthmarketscience.jackcess.impl.DatabaseImpl$TableFinder.findObjectId(DatabaseImpl.java:1953)
    at com.healthmarketscience.jackcess.impl.DatabaseImpl.readSystemCatalog(DatabaseImpl.java:858)
    at com.healthmarketscience.jackcess.impl.DatabaseImpl.<init>(DatabaseImpl.java:518)
    at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:389)
    at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:248)
    at net.ucanaccess.jdbc.DefaultJackcessOpener.open(DefaultJackcessOpener.java:38)
    at net.ucanaccess.jdbc.DBReference.<init>(DBReference.java:158)
    at net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:57)
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:103)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at ex01.main(ex01.java:37)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.builder.CompareToBuilder
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 28 more
    
    public class ex01 {
    public static void main(String[] args) {
        String url = "jdbc:ucanaccess://C:/Users/dave/My_WorkSpace/Eclipse_Workspaces/workspace-jsp/Database11.accdb";
    
        Connection con;
    
        Statement stmt;
    
        String query = "Select * from user";
    
        try {
            // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
    
            con = DriverManager.getConnection(url, "", "");
    
            stmt = con.createStatement();
    
            // Returns a ResultSet that contains the data produced by the query;
            // never null
            ResultSet rs = stmt.executeQuery(query);
    
            System.out.println("User Data:");
            System.out.println("FirstName\tLastName\tAge");
    
            while (rs.next()) {
                String fName = rs.getString("FirstName");
                String lName = rs.getString("LastName");
                int age = rs.getInt("age");
                System.out.println(fName + "\t" + lName + "\t" + age);
            }
    
            stmt.close();
    
            con.close();
        } catch (SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    

    }

  • 共有1个答案

    易扬
    2023-03-14

    如您所见,JackCess2.1.2依赖于Commons-Lang2.6。您使用的版本(3.4)不向后兼容。

    如果您的目标是连接到MS Access,为什么要为MySQL和HSQLDB提供JDBC驱动程序?

     类似资料:
    • 问题内容: 如何使用SQLAlchemy连接到MS Access?在他们的网站上,它说连接字符串是access + pyodbc。这是否意味着我需要连接pyodbc?由于我是新手,请保持温柔。 问题答案: 从理论上讲,这将通过create_engine(“ access:/// some_odbc_dsn”)进行,但是自从SQLAlchemy 0.5以来,Access后端就一直没有使用过,并且尚不

    • 问题内容: 我正在尝试从我的网站连接数据库,并使用C ++显示一些行。因此,基本上我正在尝试制作一个从站点数据库中的表中进行选择查询的应用程序。现在,这必须可行,因为我已经看到大量的应用程序正在这样做。 我该怎么做呢?有人可以举一个例子,告诉我应该使用哪些库吗? 问题答案: 在这里找到:

    • 我正在尝试使用SpringBoot连接MySQL数据库,但我遇到以下错误: 应用程序无法以类路径启动:[文件:/C:/Dev/Repositorios/jira quality/target/classes/,文件:/C:/Users/jboscod/.m2/repository/mysql/mysql连接器java/8.0.21/mysql-connector-java-8.0.21.jar,文

    • 问题内容: 如何使用java连接到mysql数据库? 问题答案: 逐步说明如何安装MySQL和JDBC以及如何使用它: 1.下载并安装MySQL服务器。只需按照通常的方式进行即可。每次更改时都请记住端口号。默认情况下3306。 2.下载 JDBC驱动程序并放入classpath,解压缩ZIP文件并将包含的JAR文件放入classpath。特定于供应商的JDBC驱动程序是 JDBC API的具体实现

    • 本文向大家介绍JDBC如何获取数据库连接,包括了JDBC如何获取数据库连接的使用技巧和注意事项,需要的朋友参考一下 JDBC(Java Database Connectivity),即Java数据库连接。通过JDBC编程,可以使Java应用程序和数据库进行交互。 JDBC驱动的方式有很多种,我们常用的驱动方式为:本地协议的纯Java驱动程序。 JDBC编程的第一步,就是要获取数据库连接。所谓的 “

    • 我试图创建一个连接到一个oracle db实例(oracle:薄)使用Airflow。 根据他们的文档,我输入了我的主机名,后跟端口号和SID: 主持人:举个例子。通讯:1524/sid 填写其他字段为: 控制类型:甲骨文 模式:用户名(文档说明:使用您的用户名作为模式) 登录:用户名 密码: * * * 建立连接后,它会为我尝试执行的每个查询(ORA-12514)提供保存错误代码。甲骨文似乎不让