我有一个连接到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;
}
答案 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
应用程序创建跟踪日志。比较两种痕迹。