【发布时间】:2015-04-29 10:30:35
【问题描述】:
我需要在我的 windows 7 64 中通过 ODBC 64 位读取 excel 文件 位机。
我的系统默认有两个odbcad32
- [32 位] C:\Windows\SysWOW64\odbcad32 (它包含 microsoft excel 驱动程序)
- [64-bit] C:\Windows\System32\odbcad32 (它没有 microsoft excel 驱动程序)
由于系统没有64位ODBC的Microsoft Excel Driver,我下载了AccessDatabaseEngine_x64并安装了。
下安装成功后
[64 位] C:\Windows\System32\odbcad32 Microsoft Excel 驱动程序 存在。
现在当我通过 eclipse 运行 java 程序时。错误消息显示为
没有找到适合 jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/ashokkumarg/Desktop/Excel/TestCaseData.xls 的驱动程序强>
但相同的代码在 Windows 32 位机器上运行良好。不知道是什么原因。
Java 版本
Windows 7 32 位机器(代码工作的地方) 1.7.0_51
Windows 7 64 位机器(代码失败的地方) 1.8.0_31
代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectionTest {
public static void main(String[] args) throws SQLException {
Connection c = null;
Statement stmnt = null;
System.out.println("Test case is started Running");
try{
c = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/ashokkumarg/Desktop/Excel/TestCaseData.xls");
stmnt = c.createStatement();
String query = "select * from [TestCase$];";
ResultSet rs = stmnt.executeQuery( query );
while( rs.next() )
{
System.out.println( rs.getString( "Page" ));
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
我有几个问题在这里:
当存在两个odbcad32时,如何在Windows 7 64位机器上使用ODBC 64位读取excel文件。
运行程序时是否获取 32 位 odbcad32 驱动程序详细信息。如果是这样,我需要如何配置 ODBC 64 位驱动程序才能在程序中使用它。
【问题讨论】:
-
让您的应用程序显示
System.getProperty("java.version")和edit 您的问题以及两台机器的结果(一台有效,另一台无效)。 -
@GordThompson 我已经用两台机器的结果编辑了这个问题。请通过它。
标签: excel jakarta-ee jdbc odbc