我处理已产生的,因为我一直工作在它连接到通过JDBC-ODBC访问一个文件的应用程序的问题。在其它Windows平台,这个问题还没有遇到,但在Windows 7 64位盒,尝试用DSN-less连接字符串连接返回:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

在弦上多种变化已经尝试,但所有的人都返回了同样的错误。下面是它目前如何尝试连接:

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  StringBuffer databaseConnectionString;

  if (SystemUtils.IS_OS_WINDOWS_7) {
       databaseConnectionString = new StringBuffer("jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=");
       databaseConnectionString.append(databaseFile);

  } else {
       databaseConnectionString = new StringBuffer("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=");
       databaseConnectionString.append(databaseFile);
       databaseConnectionString.append(";DriverID=22;READONLY=false}");
  }

检查驾驶员在32位ODBC数据源管理员确认该驱动程序都存在。然而,当REGEDT32.EXE用于检查ODBC驱动(HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers),其中没有出现。

谁能帮助到这个闪耀光芒?

有帮助吗?

解决方案

我发现这个问题是,我是运行在64位Java程序。虽然我还没有成功地拥有,如果它在32位或64位Java运行程序检测,我已经安装了32位Java运行时环境,并使用一个.bat文件,上面写着如下解决方案:

@echo off

"C:\Program Files (x86)\Java\jre6\bin\java" -D32 -Xmx1024m -jar programName.jar

感谢您的帮助!

其他提示

此是从给定的JAVA或MS的ODBC驱动有意义的错误消息的缺乏一个艰难的挑战。以上关于下选择为32位Java和MS访问驱动程序(使用AccessDatabaseEngine.exe从MS)的答案没有工作,但相对于使用64位的Java处理其他动作花费显著罚款(约30%)。我是不愿意支付这个价格所以我安装64位的Java(结合32位,无论是在一个单独的目录C:\爪哇\ 32或64)。后者目录问题对我来说是重要的,因为我是用Apache Geronimo和运行Java安装在程序文件(x86)...作为(86)似乎要杀死其批处理文件解析它不会启动。我然后卸载32位MS Access和安装64位的MS Access(AccessDatabaseEngine_x64.exe)。最后,它的工作与两个更高的速度和MDB连接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top