我是java初学者,使用控制台来编译和运行我的程序。我正在尝试使用 ucanaccess 驱动程序从 MS Access .accdb 文件读取数据。由于我已将 5 个 ucanaccess 文件添加到 C:\Program Files\Java\jdk1.8.0_60\jre\lib xt,但仍然出现异常 java.lang.ClassNotFoundException:net.ucanaccess.jdbc.ucanaccessDriver。 这是我的代码。
import java.sql.*;
public class jdbcTest
{
public static void main(String[] args)
{
try
{
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String url = "jdbc:ucanaccess://C:javawork/PersonInfoDB/PersonInfo.accdb";
Connection conctn = DriverManager.getConnection(url);
Statement statmnt = conctn.createStatement();
String sql = "SELECT * FROM person";
ResultSet rsltSet = statmnt.executeQuery(sql);
while(rsltSet.next())
{
String name = rsltSet.getString("name-");
String address = rsltSet.getString("address");
String phoneNum = rsltSet.getString("phoneNumber");
System.out.println(name + " " + address + " " + phoneNum);
}
conctn.close();
}
catch(Exception sqlExcptn)
{
System.out.println(sqlExcptn);
}
}
}
请将 JDBC 驱动程序 jar 添加到 lib 文件夹。 下载地址下载jar
就我而言,错误是在从
hsqldb
中排除 ucanaccess
后出现的,因此我可以使用 hsqldb
的 2.7.2 版本,没有安全漏洞。但显然,它与任何版本的ucanaccess
都不兼容。
该解决方案以 Source Forge 项目的分叉形式出现,保存在 GitHub 中:io.github.spannm:ucanaccess。这个版本 5.1.0 继承了原始团队留下的内容(5.0.1 版本),并且与我使用 3.0.6 版本的代码直接兼容。只是将依赖项更改为
<dependency>
<groupId>io.github.spannm</groupId>
<artifactId>ucanaccess</artifactId>
<version>5.1.0</version>
</dependency>
项目再次运行,hsqldb 没有漏洞。
我尝试了Gord在他的文章在没有ODBC的情况下从Java操作Access数据库中提到的方法,并使用eclipse而不是命令行编译和运行。另外为了学习 Eclipse 基础知识,我观看了视频教程 https://www.youtube.com/watch?v=mMu-JlBrYXo。 最后我能够从我的java代码中读取我的MS Access数据库文件。