【发布时间】: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