java - 在本地运行,但不在服务器上运行,因为 "Data source name not found and no default driver specified"

标签 java excel jdbc odbc datasource

我想使用 Java 读取单元格值(在 Excel 文件中)。在此过程中,我使用 ODBC 将 Excel 文件作为我的数据源。我在单独的 .properties 文件中编写了用户、密码、URL 和所有属性代码,以便我的 Java 程序读取并连接到 ODBC。当我在本地计算机上运行它时它工作正常,但当我在服务器上运行它时则失败。我收到的错误是:

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

服务器是运行 Windows 2012 的 64 位计算机。我在(服务器的)控制面板中检查了我的管理工具。它有两个 ODBC,一个用于 32 位,另一个用于 64 位。

我的代码仅在本地计算机上运行而不在服务器上运行的原因是什么?

是否是因为有两个工具,并且程序混淆了要寻找哪一个?

myDB=jdbc:odbc:Driver={Microsoft Excel Driver (*.xls, *.xlsx)};DBQ=c:/data.xls;READONLY=true;DriverID=22;

这是我在 .properties 文件中编写的代码。用户和密码字段为空。

是我遗漏了什么还是其他什么?

最佳答案

我认为最好的选择是从控制面板创建 ODBC DSN,然后尝试通过它进行连接:

java.sql.Connection c = java.sql.DriverManager.getConnection( "jdbc:odbc:exsh", "", "" );

而“exsh”是 DSN 的名称,它指向将要处理的电子表格文件。

如果没有 DSN,连接字符串应该是:

"jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=c:/data.xls"

请记住,由于您使用的是 64 位系统,因此您可能需要安装 64-Bit OLEDB Provider for ODBC (MSDASQL) .

关于java - 在本地运行,但不在服务器上运行,因为 "Data source name not found and no default driver specified",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33540831/

相关文章:

Java JDBC : how to get int size of table, 通过执行 SQL 查询

java - JDBC连接异常

vba - 定义数组以从范围获取数据为 "double"var 类型

c# - 使用 NPOI 将 Excel 单元格区域格式化为表格

java - JDBC 占用内存大吗?

Windows 2013 的 Java 使用和部署

java - 如何从 Java/SWT 表中删除新数据将替换旧数据的所有行?

java - 如何加载和保存 NeuralDataSet 对象 - Encog Java

java - 使用 JSeperator 时出现异常间隙 - Java

Excel:计算随时间增长百分比的任何公式