我需要在Windows 7 64中通过ODBC 64位读取excel文件 位机。
默认情况下,在我的系统中有两个odbcad32
由于系统在64位ODBC中没有Microsoft Excel驱动程序,我下载了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
CODE
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位驱动程序以在程序中使用它。
答案 0 :(得分:1)
如果System.getProperty("java.version")
正在返回" 1.8.xxxx"然后该机器正在运行Java 8,并且JDBC-ODBC Bridge不可用,因为它已从Java 8中删除。
如果您希望应用程序使用ODBC,则必须确保您的用户正在运行Java 7或更早版本。如果您不直接管理他们的计算机,这可能会很困难,因为Java运行时(JRE)的自动更新功能现在可以分发Java 8.
如果您希望您的应用程序能够在Java 8下运行,那么您将不得不使用其他方式来访问Excel数据。 Apache POI是一种可能性。
答案 1 :(得分:0)
正如您所说,相同的代码在32位机器上工作正常,我猜您的应用程序也是32位?
注意:驱动程序的位数不依赖于操作系统,而是依赖于尝试使用该驱动程序的应用程序。
所以:如果您有32位应用程序,则需要使用32位ODBC管理工具来配置DSN条目,并且需要相应的32位ODBC驱动程序。
如果您的应用程序是64位,则需要使用64位版本的管理工具以及64位驱动程序。
因此,如果您的Java运行时是32位运行时,则需要始终使用32位版本的驱动程序。如果您使用64位Java运行时,则需要使用64位版本的驱动程序。