【发布时间】:2017-08-25 14:36:13
【问题描述】:
我正在尝试使用来自 NetBeans IDE 8.2 的 UCanAccess 连接到现有的 Access 数据库,但我遇到了一个我无法弄清楚的错误...
这是此时的代码(pStrFile是现有Access文件的完整路径):
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String database = "jdbc:ucanaccess:" + pStrFile;
Connection conn = DriverManager.getConnection(database);
conn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
这是我得到的堆栈跟踪...
java.lang.ClassNotFoundException: net.ucanaccess.jdbc.UcanaccessDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at DevGSLibData01.DevGSLibData01.DoConnect(DevGSLibData01.java:28)
at DevGSLibData01.DevGSLibData01.main(DevGSLibData01.java:18)
我还在 UCanAccess 包中添加了所有必需的库:
【问题讨论】:
-
您的代码看起来正确。尝试省略
class.forName语句并使用String database = "jdbc:ucanaccess://" + pStrFile;(注意 URL 前缀末尾的两个斜杠)。 -
我实施了您建议的更改,但仍然出现错误... java.sql.SQLException: No suitable driver found for jdbc:ucanaccess://C:\MyWork\JavaDatabases05\TestDatabase.mdb在 java.sql.DriverManager.getConnection(DriverManager.java:689) 在 java.sql.DriverManager.getConnection(DriverManager.java:270) 在 DevGSLibData01.DevGSLibData01.DoConnect(DevGSLibData01.java:28) 在 DevGSLibData01.DevGSLibData01.main( DevGSLibData01.java:17)
-
嗯,好的。尝试从项目的库中删除 ucanaccess-4.0.1.jar,然后重新添加。 (也许项目元数据以某种方式混淆了。)
-
是的,我做到了,它奏效了......很棒的帮助!点对点!!!
标签: java ms-access jdbc netbeans ucanaccess