从java jar文件连接到MDB - 失败

时间:2012-05-16 13:45:18

标签: java database jar odbc

我有一个连接到mdb数据库文件的java程序。在Eclipse中它工作正常。现在我将程序导出为jar文件。当我现在启动程序并希望访问同一个文件时,我收到消息

  

找不到数据源名称且未指定默认驱动程序。

我已经在windows中将数据库注册为ODBC-source,但它不起作用。数据库的路径在Eclipse和jar中是相同的。也许是从jar中访问一些外部源的问题?有什么建议吗?

protected static Connection getAccessConnection(String fullPath)
  throws ClassNotFoundException, SQLException 
  {
    String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    Class.forName(driver);      
    String url = "jdbc:odbc:Driver="
         + "{Microsoft Access Driver (*.mdb)};"
         + "DBQ="
         + fullPath.replace("\\", "/");
    String username = "";
    String password = "";
    Connection result =
        DriverManager.getConnection(url, username, password);
    return result;
  }

1 个答案:

答案 0 :(得分:0)

您似乎使用不同版本的Java:.jar模式下的64位和Eclipse模式中的32位。您可以使用ProcessExpliorer或其他类似工具进行检查。根据:http://www.selikoff.net/2011/07/26/connecting-to-ms-access-file-via-jdbc-in-64-bit-java/

似乎连接字符串到Access数据库对于32位和64位环境是不同的。在32位中,您可以使用:

jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};...

64位:

jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};...

我认为你可以尝试两种方法并首先使用该工作(如果两者都不起作用则抛出异常)。这样,您的应用程序将能够在32位和64位JRE中工作。

如果在Eclipse和.jar中使用相同的JRE:

在ODBC管理员中,有“跟踪”选项卡。启用跟踪并从Eclipse运行应用程序。保存此跟踪日志,然后从.jar应用程序创建跟踪日志。比较两种痕迹。