使用 UCanAccess 和 Apache Commons Net 从远程服务器中的数据库读取数据

Reading from a Database in a remote Server using UCanAccess and Apache Commons Net

我有一个 java 应用程序需要从数据库读取数据。 我可以通过使用 UCanAccess 驱动程序读取 .accdb 文件 (Microsoft Access) 来简单地做到这一点。

public boolean connect()
{
    System.out.println("\n\nconnecting to database......\n\n");
    try { //connect to the database
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            con = DriverManager.getConnection("jdbc:ucanaccess://C:/Users/C92/Desktop/Database1.accdb");
            st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            return true;
        }
        catch(Exception e)
        {
            System.out.println(e);
            return false;
        }
}

我还有一个连接到服务器(运行 by FileZilla)的客户端程序,它使用 Apache Commons Net 将文件从服务器传输到客户端。

ftpClient = new FTPClient();
    ftpClient.connect(serverName, 21);
    ftpClient.login(user, pass);
    ftpClient.enterLocalPassiveMode();
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

当我想从该数据库中读取时,问题就出现了,但这次是在我连接的服务器上。我不知道如何结合这两种实现(Apache Commons Net 和 UCanAccess)来读取服务器中的 .accdb 文件。

如果您熟悉网络,请帮我解决这个问题。谢谢!

我相当确定没有办法让 UCanAccess 直接打开驻留在 FTP 服务器上的数据库文件。即使像 Apache Commons VFS 这样的机制显然也没有提供直接操作或将远程文件转换为 java.io.File 对象的方法。

因此您需要先下载数据库文件,然后在UCanAccess连接中包含本地副本的绝对路径URL。