将Java 8与Access连接时出错:未找到合适的驱动程序

将Java 8与Access连接时出错:未找到合适的驱动程序,java,database,ms-access-2007,ucanaccess,Java,Database,Ms Access 2007,Ucanaccess,我想用Access连接Java8,但出现了以下错误,我不知道如何修复它。我总是会遇到这样的错误: java.sql.SQLException:未找到适合jdbc的驱动程序:ucanaccess://C:/Users/Ghazi/workspace/java w access/login.accdb 我添加了4个库: hsqldb.jar jackcess-2.0.7.jar org.apache.commons.lang-2.6-source.jar org.apache.commons.lo

我想用Access连接Java8,但出现了以下错误,我不知道如何修复它。我总是会遇到这样的错误:

java.sql.SQLException:未找到适合jdbc的驱动程序:ucanaccess://C:/Users/Ghazi/workspace/java w access/login.accdb

我添加了4个库:

  • hsqldb.jar
  • jackcess-2.0.7.jar
  • org.apache.commons.lang-2.6-source.jar
  • org.apache.commons.loggin-1.1.1-source.jar
这是我的密码

import java.sql.*;
public class DbConnection {
    Connection con;
    Statement st;
    DbConnection(){
        dbconnect();
        }
    //-----------------------
    public void dbconnect(){
        try
        {
     Connection conn=DriverManager.getConnection("jdbc:ucanaccess://C:/Users/Ghazi/workspace/java w access/login.accdb");
      Statement stment = conn.createStatement();
        }
        catch(Exception err)
        {
            System.out.println(err);
        }
    }
    //--------------------------
        public static void main(String[]args){
            DbConnection ob=new DbConnection();
            }//end main
    }
尝试添加“Class.forName():

基本问题是早期版本的Java/JDBC使用ODBC连接到MS Access…并且ODBC驱动程序已从Java 8中删除

可使用两种备选方案:

1) UCanAccess:

……或者

2) Jackcess(Jackcess 2.0:全新的松脆外观,同样美味的填充物!):

如果这不起作用:

3) 请指定您正在使用的IDE(Eclipse等-如果适用)

4) 确保您的jackcess-2.0.7.jar显式包含在类路径中(如何实现这一点取决于您的IDE)

5)考虑在名称

中使用没有空格的目录 我添加了4个库

您需要五(5)个库。您忘记添加“ucanaccess-x.y.z.jar”文件本身

有关详细说明,请参阅


谢谢兄弟,但仍然不起作用,我使用eclipse添加了jackcess-2.0.7.jar和其他3个库,但没有解决我的问题您只需要一个库(jackcess-2.0.7.jar),并且您需要在运行/调试类路径(不仅仅是构建路径)中使用它“救命啊?是否从文件路径中删除空间?附加建议:在调用getConnection()之前,请尝试列出所有JDBC驱动程序-查看我们的朋友“ucanaccess”是否已注册。听起来这就是问题所在。看起来您没有添加ucanaccess.jar,它不在您的列表中。它位于ucanaccess发行版的根目录中,最后您需要五个JAR。
Class.forName()
绝对不是必需的。添加
Class.forName()
肯定会使Eclipse IDE的“Export…>Runnable JAR file”函数发挥作用;没有它,我就找不到合适的驱动程序,有了它,我就可以访问数据库。
   public void dbconnect(){
     try  {
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        Connection conn=DriverManager.getConnection("jdbc:ucanaccess://C:/Users/Ghazi/workspace/java w access/login.accdb");
        Statement stment = conn.createStatement();
     }
     catch(Exception err) {
       System.out.println(err);
     }
   }