JDBC驱动程序MS Access连接

我想用Java GUI程序连接我的MS访问文件,但我有连接问题….

我有Windows 7 64b和ms office 2007.当我在控制面板中打开ODBC驱动程序管理器时,我没有找到任何Microsoft Access驱动程序(也许当我启动ODBC时开始运行64位ODBC,现在我认为正在运行32位ODBC。我读了这个,我做到了:“jdbc-odbc连接窗口7 64位机器.. 1.右键单击数据源(ODBC)..转到属性更改下面的事情

目标[%SystemRoot%\ SysWOW64 \ odbcad32.exe]开始于:[%SystemRoot%\ System32]

按回车键继续作为管理员源: 源链接 “)现在,当我在conctrol pannel中启动ODBC时,我可以看到驱动程序的屏幕截图

我的程序代码(我试过两种方法,但我有同样的错误):

public void Connect() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // String DatabaseFile = "D:java/Invertory.mdb"; // String DATABASE = // "jdbc:odbc:Driver=" // + "{Microsoft Access Driver (*.mdb, *.accdb)};" // + "DBQ=" + DatabaseFile;`enter code here` String DATABASE ="jdbc:odbc:Driver= Microsoft Access Driver (*.mdb, *.accdb);DBQ=Invertory.mdb"; CONEX = DriverManager.getConnection(DATABASE); } catch (Exception X) { X.printStackTrace(); //JOptionPane.showMessageDialog(null,e); } } 

错误

java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序

使用UCanAccess JDBC驱动程序:

 Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); Connection conn=DriverManager.getConnection("jdbc:ucanaccess://",user, password); for example: Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb"); 

所以对于你的例子,它将是Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)

如果您使用的是Windows 64位,则可能需要转到此路径

C:/Windows/SysWOW64/odbcad32.exe

然后我注意到你使用直接路径而不是创建新的System DSN ,你的直接路径是正确的,直到访问文件的路径你必须给出如下所示的完整路径:

jdbc:odbc:Driver = Microsoft Access Driver(* .mdb,* .accdb); DBQ = path / to / Invertory.mdb“

要获取路径,您可能需要使用具有方法的java.io.File返回文件的绝对路径,请参阅示例:

 import java.sql.*; public class TestConnection { Connection con ; Statement st ; ResultSet rs ; String db; public TestConnection (){ try{ String path = new java.io.File("Invertory.mdb").getAbsolutePath(); db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path; doConnection(); } catch(NullPointerException ex){ ex.printStackTrace(); } } public void doConnection(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(db); st = con.createStatement(); rs = st.executeQuery("select * from Invertory"); while(rs.next()){ System.out.println(rs.getObject(1)); } }catch(SQLException | ClassNotFoundException ex){ System.out.println(ex.toString()); } } public static void main(String...argS){ new TestConnection(); } } 

我回答了一个类似的问题, 在这里输入链接描述 。

基本上那个时候:

  1. 您可以通过JDBC-ODBC桥从32位Java连接到Ms-Access
  2. 您无法通过64位Java的JDBC-ODBC连接到32位Odbc驱动程序。 有消息告诉您,您只能从32位程序连接
  3. 虽然Microsoft确实提供了64位Ms-Access驱动程序,但它不适用于Java的64位JDBC-ODBC驱动程序。

从那时起,似乎有一个新的开源Ms-Access JDBC驱动程序Ms-Access JDBC驱动程序 。 我不知道它有多好。

你刚才在代码中遗漏了一些内容:

 db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path; 

你需要在Driver=)=;之间添加{} )=; 。 像这样下面

 db ="JDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path; 
 final String fileName = "c:/myDataBase.mdb" Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fileName; Connection con = DriverManager.getConnection(url,username,password); 

问题是你应该运行Java 32位尝试安装最新的JDK,它会工作

我使用JDK版本“jdk-7u67-windows-i586.exe”运行它

在64位系统上,您应该:

  1. 以admin accessdatabaseengine_64.exe运行
  2. 运行java – 7-64位 – jre。

如果您在NETBEANS中工作,那么在解压缩ucanacess.zip文件后,使用项目的属性窗口在类路径中添加所有jar文件,单击编译选项卡并添加jar文件,然后编译并测试应用程序。

JDBC-ODBC MS-ACCESS连接已停止在JDK8中工作。 我通过在同一台PC上安装JDK7和JDK8来解决了这个问题,一旦安装了JDK7,我将它指定为JDK版本,在我的项目中使用如下Netbeans:

1.右键单击列表中的项目>点击属性

2.在左导航树上列出图书馆

3.CLICK按钮管理平台>点击按钮添加平台…

4.FOLLOW WIZARD,尽管它显示JAVA标准版点击下一步

5.NAVIGATE到C:\ Program Files(x86)\ Java并选择JDK7的文件夹>点击下一步

6.具有正确信息的现场自动填充…>然后单击完成

7.从列表中选择JDK平台>点击关闭>确定

8.JDK7应该出现在图书馆的包装中。

库包中的JDK7单击浏览器中的返回以查看图像后返回此处…

从这里开始,一切都必须顺利进行。

希望它能解决你的问题。

谢谢。