JDBC驱动程序MS Access连接

时间:2013-05-18 16:05:43

标签: java odbc

我想用MS 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]

按Enter键并继续作为管理员来源:source link “ )现在,当我在conctrol pannel中启动ODBC时,我可以看到驱动程序screenshoot

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

        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驱动程序管理器]未找到数据源名称且未指定默认驱动程序

8 个答案:

答案 0 :(得分:12)

使用UCanAccess JDBC驱动程序:

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

因此,对于您的示例,它将是Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)

答案 1 :(得分:2)

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

  

C:/Windows/SysWOW64/odbcad32.exe

然后我注意到您正在使用直接路径而不是创建新的System DSN,您的直接路径是正确的,直到 access 文件的路径为止,您必须提供如下所示的完整路径:

  

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();
    }
}

答案 2 :(得分:2)

我回答了类似的问题enter link description here

当时基本上是:

  1. 您可以通过JDBC-ODBC桥连接到32位java的Ms-Access
  2. 您无法通过64位java的JDBC-ODBC连接到32位Odbc驱动程序。有消息告诉您,您只能从32位程序连接
  3. 虽然Microsoft确实提供了64位Ms-Access驱动程序,但它无法与Java的64位JDBC-ODBC驱动程序一起使用。
  4. 此后似乎有一个新的开源Ms-Access JDBC Driver Ms-Access JDBC driver。我不知道它有多好。

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

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);

答案 5 :(得分:-1)

问题是您应该在Java 32位上运行以尝试安装最新的JDK并且它将起作用

我使用JDK版&#34; jdk-7u67-windows-i586.exe&#34;

运行它

答案 6 :(得分:-1)

在64位系统上,你应该:

  1. 以admin accessdatabaseengine_64.exe
  2. 运行
  3. 运行java - 7-64 bit - jre。

答案 7 :(得分:-1)

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

1.右键单击列表中的项目&gt;点击属性

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

3.CLICK BUTTON MANAGE PLATFORMS&gt;点击按钮添加平台...

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

5.NAVIGATE到C:\ Program Files(x86)\ Java和SELECT JDK7的文件夹&gt;点击下一步

6.具有正确信息的现场自动填充...&gt;然后点击完成

7.从列表中选择JDK平台&gt;点击关闭&gt;行

8.JDK7应该在图书馆包装中显示。

JDK7 in Libraries Package 单击浏览器中的返回以在查看图像后返回此处...

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

希望它能解决你的问题。

感谢。