java - 从linux连接到access数据库

标签 java linux ms-access

我已经创建了我的应用程序并在 Windows 下对其进行了测试,该应用程序向/从 Access 数据库文件写入/读取。

但在现实世界中,它将在 linux 环境中运行,我现在遇到了一个大问题,似乎没有用于 linux 的驱动程序来 Access ms acess db,这是我现在建立连接的方式:

private static Connection getConnection() {
        if (connection == null) {
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                String conStr = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + configuration.getAccessDbFile();
                connection = DriverManager.getConnection(conStr);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return connection;
    }

有没有人遇到过类似的事情,有没有人有建议我该怎么办?

这是我在 linux 上遇到的异常:

java.lang.NullPointerException
        at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:207)

最佳答案

在 Linux 上运行的应用程序很少 Access MS Access 数据库或使用 ODBC。 ODBC是一种windows技术。有一些适用于 linux 的选项,但这不是一个常见的场景。

如您所见,您的 Linux 机器上没有 Access ODBC 驱动程序,因此 JDBC-ODBC 桥接失败。您也许能够安装合适的 ODBC 驱动程序,但我不知道有任何免费或开源的驱动程序。 Linux 的事实上的 ODBC 选项是:

基于UnixODBC的Access商业驱动:

可以连接到 Access 数据库的 4 类 JDBC 驱动程序:

我没有任何这些方面的个人经验。 type 4 JDBC 驱动程序是理想的,但我怀疑它是否像宣传的那样完美地工作。

(我相信您有理由,但我想知道如果您计划部署到 Linux 机器,为什么要使用 Access 数据库。我认为让 Java 应用程序使用 Access 数据库的唯一充分理由如果它是具有自定义编程的现有 Access 应用程序,用于 Java 应用程序之外的目的。否则,有许多更好的选择。还要考虑,如果您使用 Access 的主要原因只是为了让您可以将 Access 用作用户友好的用于表单和报告的 GUI 工具,您仍然可以将数据存储在限制较少的数据库中(Derby、SQLLite、MySQL、PostgreSQL、MS SQL Server 等),然后通过 ODBC 从 Access 连接到数据库。)这将允许您部署您在 Linux 上的 Java 应用程序,您的数据库在任何最有意义的地方,并且仍然使用 Access 从 Windows 连接到数据库。我已经做过很多次了。)

关于java - 从linux连接到access数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5742322/

相关文章:

java - Android Launcher3 - Google 即时页面

Java:检查图像是否移动

java - 创建类似 Facebook 的菜单

linux - 如何使用 C++ 在 Linux 中的串行端口上检测缓冲区溢出

linux - 从 Linux Bash Shell 配置 NIC

linux - 查找共享信息的行

sql - SQL中如何对varchar进行排序?

java - Java 中的名称编辑器

ms-access - 表单加载和过滤问题

vba - block 查找器 - 类似功能