2

我有一个需要从 Microsoft Access 数据库中提取的 Java 程序。我最近不得不更改代码以使用 UCanAccess 而不是 ODBC,因为 Java SE 8 不支持 JDBC-ODBC 桥(Manipulating an Access database from Java without ODBC

当我运行下面显示的代码(只是 UCanAccess 网站上给出的示例代码)时,我收到一个错误 -

ERROR: net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: NULL

代码如下

Connection conn=DriverManager.getConnection("jdbc:ucanaccess://Z:\\Assignment.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM tbl2014janjun"); //tbl2014janjun ORDER BY ID
while (rs.next()) {
    System.out.println(rs.getString(1));
}

在测试时,我注意到这个代码可以访问一个单独的数据库,工作订单,并且输出符合预期。此外,每当此代码尝试运行时,它都会在服务器目录中生成锁定 laccdb 文件。因此,我认为问题在于用户权限。在此站点搜索可能的答案时,其中大部分与错误消息的后半部分有关 - 表格拼写错误等。我已确保拼写/位置/文件结构正确。

感谢您提供任何帮助。

4

1 回答 1

2

从 Tomcat 6 迁移到 7 后,我遇到了完全相同的问题。两个数据库在同一个地方,具有相同的表和列,只是数据不同(不同的项目)。一个工作正常,另一个给出了上述错误。

通过在 Access Windows 应用程序中执行“压缩和修复数据库”操作来修复它。(在 Access 2007 中,它Manage > Repair来自主工具栏下拉菜单。)

于 2015-08-03T13:40:10.733 回答