用Java访问MS-Access数据库

用Java访问MS-Access数据库,ms-access,jdbc,odbc,Ms Access,Jdbc,Odbc,我曾尝试使用上述代码使用Java访问MS Access数据库,但始终存在异常。我试过一些东西 try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String database = "jdbc:odbc:Driver={MS Access Database (*.accdb)};DBQ=obn.accdb;"; c= D

我曾尝试使用上述代码使用Java访问MS Access数据库,但始终存在异常。我试过一些东西

            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 );
            }
在第一个和第二个例子中,我得到一个例外-

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

尝试这样做,在windows的ODBC数据源(32位)中添加OBN,选择数据库的路径。但它也不起作用

它给出了错误

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

我通常不使用MS Access,但对于一个大学项目,我必须验证您是否为您的环境使用了正确的ODBC驱动程序名称。您需要指定

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

{Microsoft Access Driver (*.mdb)}
…这取决于您是要使用较旧的“Jet”驱动程序(仅适用于.mdb文件,仅适用于32位应用程序)还是较新的“ACE”驱动程序(.mdb或.accdb文件,可由32位或64位应用程序使用,如果计算机尚未对其进行访问,则可能需要单独安装。)

我找到了一个解决方案

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

driver关键字语法错误是我在尝试{Microsoft Access driver(.mdb,*.accdb)}或{Microsoft Access driver(.accdb)}c=DriverManager.getConnection时得到的(“jdbc:odbc:obn”);我认为64位和32位之间存在不匹配
{Microsoft Access Driver (*.mdb)}
{Microsoft Access Driver (*.mdb, *.accdb)}