0

I have a java program connecting to a mdb database file. In Eclipse it works fine. Now I export the program as an jar file. When I start the program now and want to have access to the same file, I get the message

Data source name not found and no default driver specified.

I have already registered the database as ODBC-source in windows, but it doesn't work. The Path to the Database is the same in Eclipse and in jar. Maybe is the problem accessing some external source from within a jar?? Any suggestions?

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;
  }
4

1 回答 1

0

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

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

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

在 64 位中:

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

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

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

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

于 2012-05-21T08:20:48.867 回答