【发布时间】:2015-12-11 00:13:11
【问题描述】:
我一直在尝试创建一个新项目以使用 UCanAccess 读取 MS Access 文件。我一直在关注来自@Gord Thompson 的信息以及 github 中用于 UCanAccess 的示例文件。排除我使用不同名称的事实,每件事都是一样的。我不使用任何 GUI IDE。我只是从命令行编译,基本上,我编写了一个进行命令行编译的 Java 程序。
参考资料:
Manipulating an Access database from Java without ODBC
https://github.com/andrew-nguyen/ucanaccess/blob/master/example/net/ucanaccess/example/Example.java
我的代码示例如下:
String path = new java.io.File(PATH).getAbsolutePath();
db = "jdbc:ucanaccess://" + path;
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn = DriverManager.getConnection( db );
Statement s = conn.createStatement();
我的错误信息是:
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at GreatBeyond.<init>(GreatBeyond.java:36)
at GreatBeyond.main(GreatBeyond.java:66)
Caused by: java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver
at net.ucanaccess.jdbc.UcanaccessDriver.<clinit>(UcanaccessDriver.java:54)
... 4 more
第 36 行是“Class.forName”,我尝试在没有它的情况下运行程序,但它失败了。我已经下载了 UCanAccess 的 zip 文件并将其解压缩到 com 目录,Jackcess 被解压缩到 net 目录。谁能指出出了什么问题?
【问题讨论】:
-
我不知道 UCanAccess,但它似乎正在寻找一个(缺少的)HSQL 数据库驱动程序。您要么需要配置一些东西,要么将驱动程序 jar 添加到您的类路径中。
-
'PATH'来自哪里?请注意数据库路径需要传递到连接字符串,而不是脚本路径。
标签: java jdbc ucanaccess