UCanAccess 找不到我的数据库

Posted

技术标签:

【中文标题】UCanAccess 找不到我的数据库【英文标题】:UCanAccess can not find my DB 【发布时间】:2015-08-31 15:45:24 【问题描述】:

我正在尝试使用 UCanAccess 将我的 Java 代码连接到访问表 这是我的代码:

import java.sql.*;

public class HH 

    public static void main(String[] args) throws SQLException 
        // opens a connection to the database
        Connection conn=DriverManager.getConnection("jdbc:ucanaccess://C:/Users/user/Documents/Database5.accdb‬");
        Statement s = conn.createStatement();
    

由于某种原因,它抛出了这个:

Exception in thread "main" net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.0 given file does not exist: C:\Users\user\Documents\Database5.accdb‬
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:258)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at HH.main(HH.java:8)
Caused by: java.io.FileNotFoundException: given file does not exist: C:\Users\user\Documents\Database5.accdb‬
    at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:362)
    at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:248)
    at net.ucanaccess.jdbc.DefaultJackcessOpener.open(DefaultJackcessOpener.java:35)
    at net.ucanaccess.jdbc.DBReference.<init>(DBReference.java:160)
    at net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:51)
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:96)
    ... 3 more

路径没问题,如果我将它输入到 Windows 资源管理器中,它会打开我的数据库。

【问题讨论】:

看起来 java 进程的用户对给定目录“C:\Users\user\Documents\”没有所需的权限。如果更改 accdb 位置怎么办? 非常感谢!我试图将它移动到其他地方,但在它不起作用后我将它移动到 eclipse 中的包中,工作正常。 【参考方案1】:

根据我在 UCanAccess 等方面的经验,我认为您的代码 "jdbc:ucanaccess://C:/Users/user/Documents/Database5.accdb‬"

应该是

"jdbc:ucanaccess://C:\\Users\\user\\Documents\\Database5.accdb‬"

原因:在文件系统中它使用反斜杠而不是正斜杠,并且在 java 字符串中 '\' 字符是转义符,因此要输入其中一个字符,您需要自行转义: \\ 将在 getConnection 方法中显示为 \

【讨论】:

不,Java、php 等许多系统都接受正斜杠作为 Windows 系统上的路径分隔符。 "C:/path/to/file.accdb" 可以正常工作。 @Gord Thompson 仍然对我不起作用,它一遍又一遍地给出错误“未找到给定文件”的任何想法,为什么会发生这种情况?

以上是关于UCanAccess 找不到我的数据库的主要内容,如果未能解决你的问题,请参考以下文章

UCanAccess:找不到合适的驱动程序

UCanAccess 4.0.2 大写列名找不到

引用其自己的列别名的查询的 UCanAccess“找不到对象”错误

在 NetBeans 中导出 maven 项目后找不到 Ucanaccess 驱动程序

除非使用完整路径,否则找不到合适的驱动程序

找不到适合 jdbc:ucanaccess://C:\Users\Asim Iqbal\Documents\PersonInfo.accdb 的驱动程序