【问题标题】:Java 64-bit JDBC-ODBC driver issuesJava 64 位 JDBC-ODBC 驱动程序问题
【发布时间】:2012-03-02 16:20:35
【问题描述】:

我有一个程序,当使用 32 位 JVM 编译时可以正常工作,但如果我尝试使用 64 位 JVM 则会出现问题。我收到的消息是:"[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"

我正在尝试使用如下代码连接到 Excel 和 SQL Server 数据库:

String file = directory + "/fileName.xlsm";

String connectStr= "jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ="  + file +  ";READONLY=false";

try {
    Class.forName(getDriver());
    gConnection = DriverManager.getConnection(connectStr);
    //do stuff with connection
}

当我尝试检查驱动程序管理器时,它似乎没有 64 位版本的驱动程序。任何方法都可以轻松解决此问题并能够使用 64 位驱动程序进行连接,而无需手动更改计算机上的设置(因为该程序将分布在多台计算机上,我不想为任何一台计算机单独下载驱动程序)想要运行它)?此外,使用 64 位驱动程序连接效率更高,还是 32 位驱动程序同样好/快(我确实有非常大的数据集,所以小的差异会产生影响)?

【问题讨论】:

  • 哪个版本的 Excel?在 Office 2010 之前,驱动程序只有 32 位。
  • 哦,对不起。现在是 2010 年。此外,MS Office 是 32 位的,但我认为仍然可以使用 64 位驱动程序?
  • 但是否必须为每台想要运行我的程序的计算机单独下载/安装?
  • 分布式,是的。像任何其他 OBDC 驱动程序一样。

标签: java sql-server excel jdbc odbc


【解决方案1】:

64 位应用程序不能使用 32 位 ODBC 驱动程序,反之亦然,这就是您收到该错误消息的原因。您可以通过运行 32 位 (C:\Windows\SysWow64\odbcad32.exe) 和 64 位 (C:\Windows\System32\odbcad32.exe) ODBC 数据源管理员(驱动程序选项卡)来验证哪些 ODBC 驱动程序可用分别 - 当然是在 64 位系统上。一开始命名很混乱。

我使用的一个应用程序也有类似的问题 - Access/Excel ODBC 驱动程序仅支持 32 位,这意味着当以 64 位运行时,我们的应用程序无法处理打开 Excel 或 Access 数据库文件。我们最终转而使用Apache POI library,这是一个可以直接读取/写入 Excel 和其他 Office 文档的 Java 库。您可能想考虑尝试一下,尽管切换会涉及一些工作。

当时,Office 2010 尚未推出。我没有意识到他们在 Office 2010 中创建了 64 位 ODBC 驱动程序,现在必须看看这是否是一个合法的选择......即使它是我不喜欢在 Java 应用程序中依赖 ODBC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多