You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK7运行时错误:数据源未找到且无默认驱动指定求助

解决java.sql.SQLException: [Microsoft][ODBC Driver Manager] 数据源名称未找到且无默认驱动指定

这个错误本质是JDBC-ODBC桥无法定位到正确的Access ODBC驱动,或者你的数据库连接配置存在问题。结合你用JRE 7的场景,我给你拆解几个核心原因和对应的解决步骤:

1. 优先检查JRE与ODBC驱动的位数兼容性

这是最容易踩坑的点:

  • 如果你运行代码用的是64位JRE,必须安装64位版本的Microsoft Access ODBC驱动;如果是32位JRE,就得装32位驱动。
  • 很多人会忽略这点,比如系统是64位但装了32位驱动,或者JRE是32位却用64位驱动,直接导致驱动找不到。
  • 如何验证?打开对应位数的ODBC数据源管理器:
    • 32位:运行 C:\Windows\SysWOW64\odbcad32.exe
    • 64位:运行 C:\Windows\System32\odbcad32.exe
      查看里面是否有Microsoft Access Driver (*.mdb)这个驱动选项,如果没有,说明驱动没装对位数。

2. 修正你的数据库连接字符串

从你给出的代码片段看,连接字符串没有写完整,正确的格式需要明确指定数据库文件的路径:

try {
    String database = "StegoKeys.mdb";
    // 获取数据库文件的绝对路径,避免相对路径找不到文件的问题
    String dbAbsolutePath = new File(database).getAbsolutePath();
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    // 完整的连接字符串格式
    String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + dbAbsolutePath;
    // 后续获取连接的代码...
} catch (Exception e) {
    e.printStackTrace();
}

如果你的StegoKeys.mdb文件不在程序的当前工作目录,只写文件名会导致驱动找不到数据库文件,所以用绝对路径更稳妥。

3. 可选方案:通过ODBC DSN连接

如果你觉得拼接字符串麻烦,可以手动配置系统DSN:

  1. 打开对应位数的ODBC数据源管理器(步骤同上)
  2. 切换到「系统DSN」标签,点击「添加」
  3. 选择Microsoft Access Driver (*.mdb),输入DSN名称(比如StegoKeysDSN),然后选择你的StegoKeys.mdb文件路径
  4. 之后连接字符串可以简化成:
String url = "jdbc:odbc:StegoKeysDSN";

补充:驱动安装提示

如果你的Windows系统没有预装合适的Access ODBC驱动,可以下载Microsoft Access Database Engine 2010 Redistributable(注意选对应位数的安装包),安装后就能在ODBC管理器里看到对应的驱动选项了。


内容的提问来源于stack exchange,提问作者Ashish Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:29:36