1

可能重复:
Microsoft Access 和 Java JDBC-ODBC 错误

一开始我在创建数据库时遇到了问题。我有一个 64 位版本的 Windows 7,发现错误是 Microsoft Office 是 32 位的。我能够使用 c:\Windows\sysWOW64\odbcad32.exe 中的 odbcad32.exe 创建我的 Access 数据库

现在,在我的 Java 代码中,我只是想建立连接,但又遇到了似乎相关的问题,这让我觉得最多只是没有正确设置数据库。JavaDB 是我在 ODBC:DSA 中创建的数据源的名称,您可以在此处看到:http: //i.imgur.com/9n19x.png

我一直在互联网上搜索,但无法真正找到可靠的明确答案。真的可以使用帮助,在此先感谢!

编辑:我清理了我的代码,现在我的错误不同了。我在 C:\Eclipse\project1\src 的项目文件夹中有我的物理数据库文件 - 我已经设置它,就像我在 ODBC 中所说的一样。

编辑 编辑:好吧,经过数小时的研究,我最终还是弄明白了。问题不在于我的代码,而是与 Office 中的 Windows x64BIT 和 32 位驱动程序的兼容性问题。这篇文章帮助我修复了它,现在它可以工作了!http://www.selikoff.net/2011/07/26/connecting-to-ms-access-file-via-jdbc-in-64-bit-java/

import java.sql.*;

public class DBTester {

public static void main(String[] args) throws SQLException, ClassNotFoundException {

try 
{

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");


    String fileName = "C:/Eclipse/school/bin/RegistrationDB.mdb";


    String dB = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+fileName;
    Connection connection = DriverManager.getConnection(dB,"","");

    System.out.println("connected");

    Statement s = connection.createStatement();
    s.close();
    connection.close();

} catch(Exception ex)
{

    ex.printStackTrace();

}


} // end main

} // end class
4

1 回答 1

1

经过大量研究并看到与我在这里和其他地方相关的大量未回答的问题后,我偶然发现了一篇文章,其中有一个简单的修复,让我想把头撞到我的桌子上。

http://www.selikoff.net/2011/07/26/connecting-to-ms-access-file-via-jdbc-in-64-bit-java/

如果您有 64 位 Windows 7 机器和 32 位版本的 Access - 您将会遇到问题。从这篇文章中,我能够卸载我当前的 MS Access - 并重新安装 64 位版本。重新添加了我的数据库源,一切正常。

于 2012-12-09T02:56:41.407 回答