JDBC驱动程序MS Access连接

art*_*iny 8 java odbc

我想用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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

错误

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

Ant*_* O. 13

使用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");
Run Code Online (Sandbox Code Playgroud)

所以对你的例子来说就是这样 Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)


Aza*_*zad 2

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

C:/Windows/SysWOW64/odbcad32.exe

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

jdbc:odbc:Driver= Microsoft Access 驱动程序 (*.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();
    }
}
Run Code Online (Sandbox Code Playgroud)