2013-07-19 160 views
0
  try{ 
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
       String database = 
      "jdbc:odbc:Driver={MS Access Database (*.accdb)};DBQ=obn.accdb;"; 
     c= DriverManager.getConnection(database, "", ""); 
     s=c.createStatement(); 
        string = "IN TRY"; 
        s.close(); // Close the statement 
        c.close(); // Close the database. Its no more required 
        JOptionPane.showMessageDialog(null, string); 

      } 
      catch(Exception e) 
      { 
       string = "IN exception"; 
       JOptionPane.showMessageDialog(null, string); 
      } 

我尝试访问使用Java的MS Access数据库使用上述代码总是有一个例外。我已经尝试了一些东西使用Java访问MS Access数据库

  c= DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=obn.mdb"); 
      s=c.createStatement(); 

在第一个和第二个我得到的例外 -

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified. 

...

   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     c= DriverManager.getConnection("jdbc:odbc:obn"); 
     s=c.createStatement(); 

试着这样做类似这样的,在加入OBN ODBC中的数据源(32位),选择数据库的路径。但它也没有工作。

它给错误

The specified DSN contains an architecture mismatch between the Driver and Application 

我通常不使用的MS Access,但我必须为大学项目

回答

1

验证您正在为您的环境使用正确的ODBC驱动程序名称。您需要指定要么...

{Microsoft Access Driver (*.mdb)} 

......或者......

{Microsoft Access Driver (*.mdb, *.accdb)} 

...这取决于你是否要使用旧的 “喷气机” 的驱动程序(仅适用于的.mdb文件,仅适用于32位应用程序)或较新的“ACE”驱动程序(.mdb或.accdb文件,可由32位或64位应用程序使用,如果机器尚未安装,可能需要单独安装访问它)。

+0

驱动程序关键字语法错误是我什么时候得到我尝试 {Microsoft Access驱动程序(* .MDB,* .ACCDB)} 或 {Microsoft Access驱动程序(* .ACCDB)} – XuryaX

+0

C =的DriverManager.getConnection( “JDBC:ODBC:OBN”); 我认为这里有64位,32位不匹配 – XuryaX

0

我找到了解决方案。

使用此连接是正确的。 c = DriverManager.getConnection(“jdbc:odbc:obn”); 数据库必须在windows管理工具的odbc下添加。由于没有64位驱动程序,所以必须使用32位驱动程序。由于32位odbc驱动程序正在使用,我们无法使用64位JVM,因此将JVM从64位更改为32位从项目经理伎俩,现在它工作正常