我在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
。
如果有人能揭露我的问题,我将不胜感激,我说的任何错误或愚蠢的事情都可以自由纠正我。
根据这篇帖子,Java8中删除了JDBC-ODBC桥。您可以使用专门用于Access的JDBC驱动程序。我看到很多人提到UCanAccess来连接Access,尽管我自己没有使用过。
根据Oracle的说法,从Java SE 8起,JDK将不再包含JDBC-ODBC桥,并且
理想的是"纯Java":没有本机代码,没有依赖于平台的功能。
这意味着至少要查找JDBC类型3或4。
Lance Andersen写道:
JDBC-ODBC桥一直被认为是过渡性的,是一种不受支持的产品,它只与选定的JDK捆绑包一起提供,而不包含在JRE中。
JDBC-ODBC桥提供了对JDBC 2.0的有限支持,并且不支持JDBC规范的最新版本。
您应该使用任何第三方数据库驱动程序(因为Microsoft没有提供任何(,或者使用以前版本的java。无论如何,我建议使用特定的驱动程序,而不是JDBC-ODBC驱动程序。
为此,您可以查看以下任何一个:
- EasySoft驱动程序
- UCanAccess
Oracle(和Sun(的官方立场(自JDBC 1.0以来!(一直是--
[JVM绑定的]JDBC-ODBC桥应被视为过渡解决方案[…]Oracle[was Sun]不支持JDBC-ODBC桥。
然而,我的雇主OpenLink Software从JVM 1.0开始就在JDBC和ODBC之间生产了企业级商业1型桥接器,并且当前版本与当前的JVM 1.8完全兼容。您可以在这里了解更多信息--
- 单层JDBC-ODBC桥驱动程序——ODBC数据源的JDBC驱动程序
- 单层ODBC-JDBC桥驱动程序——JDBC数据源的ODBC驱动程序
ODBC桥可能不存在于JRE中,而不是SUN中。检查JRE。