我正在使用Eclipse EE IDE中的Java项目,我必须查询.accdb
文件。
问题是当我尝试加载驱动程序然后连接到数据库时,它会给我一个异常错误。
我的代码:
try{
String filePath = "//myfilepathtomydb/BLABLA/example.accdb"
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + filePath;
Connection database = DriverManager.getConnection(url);
System.out.println("Connection sucessful");
} catch (ClassNotFoundException e){
System.err.println("Got an exception");
System.err.println(e.getMessage());
e.printStackTrace();
} catch (SQLException sqle) {
sqle.printStackTrace();
// TODO: handle exception
}
例外:
Got an exception
sun.jdbc.odbc.JdbcOdbcDriver
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at project.Main.main(Main.java:15)
我在64位Windows中使用32位Eclipse,而且我从64位JRE不支持这种连接数据库的方式,所以我使用的是32-位JRE(jdk1.8.0_05),在我的运行配置中,我在VM中使用了'-d32'参数。
显然JdbcOdbcDriver
应该在 rt.jar 中,但是当我找到它时,我找不到以下包:sun.jdbc.odbc.JdbcOdbcDriver
。
如果有人可以解决我的问题,我会感激,我说的任何错误或愚蠢的事情都可以自由地纠正我。
答案 0 :(得分:8)
根据this帖子,在Java8中删除了JDBC-ODBC Bridge。您可以专门为Access使用JDBC驱动程序。我看到很多人提到UCanAccess连接到Access,虽然我自己没有使用它。
答案 1 :(得分:4)
根据Oracle,从Java SE 8开始,JDK将不再包含JDBC-ODBC Bridge,而
理想的是“纯Java”:没有本机代码,没有平台相关功能。
这意味着至少要查找JDBC类型3或4。
Lance Andersen wrote:
JDBC-ODBC Bridge一直被认为是过渡性的,是一种不受支持的产品,仅提供选择的JDK捆绑包,而不包含在JRE中。
JDBC-ODBC桥为JDBC 2.0提供有限的支持,不支持更新版本的JDBC规范。
您应该使用任何第三方数据库驱动程序(如Microsoft不提供任何内容)或使用以前版本的java。 无论如何,我建议使用特定的驱动程序,而不是JDBC-ODBC。
为此您可以查看以下任何内容:
答案 2 :(得分:1)
Oracle(和Sun的)official position已经很久了(因为JDBC 1.0!)就是那个 -
[JVM-bundled] JDBC-ODBC Bridge应被视为过渡解决方案[...] Oracle [Sun]不支持JDBC-ODBC Bridge。
但是,自JVM 1.0以来,我的雇主OpenLink Software已经在JDBC和ODBC之间生成了企业级商业类型1桥接器,当前版本与当前的JVM 1.8完全兼容。你可以在这里了解更多 -
答案 3 :(得分:0)
ODBC桥可能不存在于JRE中而不是SUN中。检查你的JRE。