Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 64位JDBC-ODBC驱动程序问题_Java_Sql Server_Excel_Jdbc_Odbc - Fatal编程技术网

Java 64位JDBC-ODBC驱动程序问题

Java 64位JDBC-ODBC驱动程序问题,java,sql-server,excel,jdbc,odbc,Java,Sql Server,Excel,Jdbc,Odbc,我有一个程序,当使用32位JVM编译时运行良好,但如果我尝试使用64位JVM,则会出现问题。我收到的消息是:“[Microsoft][ODBC驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序” 我正在尝试使用以下代码连接Excel和SQL Server数据库: String file = directory + "/fileName.xlsm"; String connectStr= "jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls, *

我有一个程序,当使用32位JVM编译时运行良好,但如果我尝试使用64位JVM,则会出现问题。我收到的消息是:
“[Microsoft][ODBC驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序”

我正在尝试使用以下代码连接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位驱动程序是否同样好/快(我有非常大的数据集,所以微小的差异会产生差异)?

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

我使用的一个应用程序也有类似的问题——Access/Excel ODBC驱动程序只有32位,这意味着当以64位运行时,我们的应用程序无法处理打开Excel或Access数据库文件的问题。我们最终转向使用,这是一个可以直接读/写Excel和其他Office文档的Java库。你可能想考虑尝试一下,虽然切换会涉及到一些工作。
当时,Office2010还没有推出。我不知道他们在Office 2010中创建了64位ODBC驱动程序,现在必须看看这是否是一个合法的选项。。。即使是这样,我也不喜欢在Java应用程序中依赖ODBC。

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