"给定文件不存在" UCanAccess连接问题

时间:2016-04-03 08:24:10

标签: java jdbc ucanaccess

我试图在Mac(el capitaine)上连接到Eclipse(Mars 4.5.0; Java 1.8)中的Microsoft Access数据库。我一直收到错误: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.4 given file does not exist: Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb

这是我的代码:

import java.sql.*;

public class DbAccess
{
    public static void main(String[] args) 
    {

        try
        {
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            Connection conn=DriverManager.getConnection("jdbc:ucanaccess://Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb;");
            Statement stment = conn.createStatement();
            String qry = "SELECT * FROM Table1";

            ResultSet rs = stment.executeQuery(qry);
            while(rs.next())
            {
                String id    = rs.getString("ID") ;
                String fname = rs.getString("Nama");

                System.out.println(id + fname);
            }
        }
        catch(Exception err)
        {
            System.out.println(err);
        }

    }
}

我确定它与路径名斜杠有关,但我已尝试过每个排列,但仍会遇到同样的错误。

2 个答案:

答案 0 :(得分:4)

我不熟悉Mac文件系统,但您尝试过“jdbc:ucanaccess:/// ...”(包括额外的斜杠)吗?

说明:

数据库文件的路径紧跟在连接URL的jdbc:ucanaccess://前缀之后,因此对于

jdbc:ucanaccess://Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb;

数据库文件的路径是

Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb

,相对于启动Java应用程序时生效的OS级别当前目录,被解释为相对路径

为了将路径解释为绝对路径,它必须以正斜杠开头,即

/Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb

因此连接URL必须是

jdbc:ucanaccess:///Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb

答案 1 :(得分:0)

  1. 打开您的MS Access数据库
  2. 转到文件
  3. 选择OPEN数据库
  4. 右键单击您的数据库,然后选择“复制链接”
  5. 将链接粘贴到jdbc:ucanaccess://
  6. 之后