【问题标题】:Cannot connect my ms access with java无法将我的 ms 访问权限与 java 连接
【发布时间】:2012-11-15 01:42:52
【问题描述】:

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

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

  2. 我在本网站下载了 Microsoft Access Database Engine 2010 Redistributable for AccessDatabaseEngine_x64.exe。 http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=13255

我研究了大部分网站,他们告诉我们下载数据库引擎 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; 
}

【问题讨论】:

  • 你能告诉我们你的java代码吗?
  • 私人连接骗局; public void setUp(String dsn) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (Exception e) { System.out.println("加载驱动错误"); } 尝试 { 字符串 s = "jdbc:odbc:" + dsn; con = DriverManager.getConnection(s, "", ""); } 捕捉(异常 e){ e.printStackTrace(); } } public ResultSet readRequest(String dbQuery) { ResultSet rs = null;尝试 { 语句 stmt = con.createStatement(); rs = stmt.executeQuery(dbQuery); } 捕捉(异常 e){ e.printStackTrace(); } 返回 rs; }
  • 通常您会编辑原始问题以显示源代码。我会把它放在那里,但你可能想修正格式。
  • 您的 JDBC 连接位看起来很可靠,因此问题可能与 ODBC 的设置有关。不幸的是,我不是 ODBC 和 MS-Access 方面的专家...

标签: java ms-access odbc


【解决方案1】:

连接 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,"","");

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

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

【讨论】:

  • 但这是我的代码。私人连接骗局; public void setUp(String dsn) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (Exception e) { System.out.println("加载驱动错误"); } 尝试 { 字符串 s = "jdbc:odbc:" + dsn; con = DriverManager.getConnection(s, "", ""); } 捕捉(异常 e){ e.printStackTrace(); } } public ResultSet readRequest(String dbQuery) { ResultSet rs = null;尝试 { 语句 stmt = con.createStatement(); rs = stmt.executeQuery(dbQuery); } 捕捉(异常 e){ e.printStackTrace(); } 返回 rs; }
  • @GabrielHeng 我已根据您的反馈更新了解决方案。
猜你喜欢
  • 2012-11-06
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多