尝试与 UCanAccess 连接时出现“未找到合适的驱动程序”错误

Posted

技术标签:

【中文标题】尝试与 UCanAccess 连接时出现“未找到合适的驱动程序”错误【英文标题】:"No suitable driver found" error when trying to connect with UCanAccess 【发布时间】:2015-06-11 23:30:36 【问题描述】:

我根据这篇文章修改了以下代码 答案:

Manipulating an Access database from Java without ODBC

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Main 

    void reportTotalCopies(Connection connection)  
    
      try
        Statement statement1 = connection.createStatement();
        Statement statement2 = connection.createStatement();
        String Sql = "SELECT [Κωδικός], [Τίτλος], [Πλήθος Αντιγράφων] FROM [Βιβλίο] ";

        ResultSet set1 = statement1.executeQuery(Sql);
        while (set1.next()) 
        
            int code = set1.getInt(1);
            String title = set1.getString(2);
            int copies = set1.getInt(3);
            Sql = "SELECT COUNT(Δανεισμός."
                + "[Αριθμός Ταυτότητας Μέλους]) "
                + "AS [Δανεισμένα] "
                + "FROM Δανεισμός "
                + "WHERE Δανεισμός.[Κωδικός Βιβλίου] = " 
                + code
                + " GROUP BY Δανεισμός.[Κωδικός Βιβλίου]";
            ResultSet set2 = statement2.executeQuery(Sql);
            if (set2.next()) 
                copies += set2.getInt(1);
            System.out.printf("%-60s%d\n", title, copies);
        
      
      catch(SQLException ex)
          while(ex != null)
              ex.getMessage();
              ex.getNextException();

          
      
    

    public static void main(String args[]) 


        try 
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            //String database = "jdbc:odbc:Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=" + filename + ";DriverID=22;READONLY=true";
            String database = "jdbc:ucanaccess:\"Library.accdb\"";
            Connection con = DriverManager.getConnection("jdbc:ucanaccess:C:\\JavaBooks\\Java12\\Library.mdb");
            new Main().reportTotalCopies(con);
            //new Java1202().reportBooksByMember(connection);
            con.close();
         catch (Exception ex) 
            ex.printStackTrace();
            System.out.println("Here");
        
    

运行时出现以下错误...

java.sql.SQLException: No suitable driver found for jdbc:ucanaccess:C:\JavaBooks\Java12\Library.mdb
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Main.main(Main.java:52)

我还在 Eclipse 构建路径中包含了 UCanAccess 的 5 个 JAR 文件。

什么可能导致问题?

【问题讨论】:

我在尝试使用 Library.accdb 文件时遇到同样的错误! 如果我不在 Eclipse 中运行程序,我应该将 5 个 .jar 文件粘贴到哪里以便在 Powershell 上编译和运行程序? 【参考方案1】:

jdbc url 错误,你丢了一个 //

jdbc:ucanaccess://C:\JavaBooks\Java12\Library.mdb

【讨论】:

以上是关于尝试与 UCanAccess 连接时出现“未找到合适的驱动程序”错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 UCanAccess 插入 ResultSet 时出现“必须在插入之前设置所有列”错误

Hibernate - 使用 net.ucanaccess.jdbc.UcanaccessDriver 时出现 org.hibernate.MappingException

使用 UCanAccess / jackcess 作为 JDBC 到 MS Acess 数据库时出现 IncompatibleClassChangeError

通过 UCanAccess 插入时出现“强制转换的字符值无效”错误

当我尝试与我的数据库建立连接时出现错误

尝试通过 JDBC 与 Postgres 建立 SSL 连接时出现 PSQLException“无法打开 SSL 根证书文件”