无法使用java连接我的ms访问权限

时间:2012-11-27 12:23:58

标签: java ms-access odbc

我尝试了多种方法将我的数据库从ms access 2010连接到java,但它不起作用。

  1. 我通过将属性中的路径更改为%windir%\SysWOW64\odbcad32.exe,将ODBC驱动程序路径从64位设置为32位。

  2. 我在本网站下载了AccessDatabaseEngine_x64.exe的Microsoft Access数据库引擎2010可再发行组件。 http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=13255

  3. 我研究了大部分网站,他们告诉我们下载数据库引擎2010。 但是,我仍然收到此错误:

      

    [Microsoft] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配。

    是否有人可以发布分步指南来解决我的问题?任何帮助将不胜感激。

    当前源代码

    private Connection con; 
    public void setUp(String dsn) {
        try { 
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (Exception e) { 
            System.out.println("Load driver error"); 
        } try { 
            String s = "jdbc:odbc:" + dsn; 
            con = DriverManager.getConnection(s, "", ""); 
        } catch (Exception e) {
            e.printStackTrace(); 
        } 
    } 
    
    public ResultSet readRequest(String dbQuery) { 
        ResultSet rs = null; 
        try { 
            Statement stmt = con.createStatement(); 
            rs = stmt.executeQuery(dbQuery); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return rs; 
    }
    

1 个答案:

答案 0 :(得分:0)

连接64位JVM和64位MS-Access与64位略有不同。这是一个经历过和你一样痛苦的人,written an article就如何解决这个问题。

基本上,如果您使用64位库,则需要稍微更改连接字符串。使用此:

String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fileName;
con = DriverManager.getConnection(url,"","");

其中filename是访问文件的完整路径的字符串,而不是:

String s = "jdbc:odbc:" + dsn; 
con = DriverManager.getConnection(s, "", "");