我正在考虑将 Microsoft 访问数据库用于 Java 项目。我的问题是,如果我使用 Microsoft 访问数据库并且我完成了我的项目并将其作为 jar 文件在任何计算机/操作系统上运行,是否任何计算机/操作系统都需要在其上安装 Microsoft 访问,特别是如果数据库需要放在 java 程序上的 GUI 上,程序的管理员可以添加和删除条目。
2 回答
您必须在访问数据库的任何机器上安装 access odbc 驱动程序。我认为您可以通过安装 Access 运行时的东西而不安装所有 Access 来做到这一点。请记住,这种数据访问是文件级别的,因此您的性能会很差。我建议你使用一个真正的数据库(postgres、mysql、sql server、oracle)或者一个轻量级的数据库,比如SQL Server express,然后使用 odbc-jdbc 桥或者最好是原生 jdbc 驱动程序访问该数据库。使用本机 jdbc 驱动程序可以让您在非 Windows 环境中运行您的应用程序。
您可以在每个 Microsoft Windows 系统上通过JDBC-ODBC 桥使用 Access 数据库,而无需安装 Microsoft Access。您只需要以前称为Jet 数据库引擎的 Access 数据库引擎 (ACE) 。ACE 是当前 Windows 版本的一部分。对于较旧的,可能需要安装Microsoft 数据访问组件(MDAC)。
从 Java 中使用 Access 数据库有一些缺点:
- 这是带有本机代码的 1 类驱动程序。通常纯 Java JDBC 驱动程序性能更高。
- 在 JDK 6 中,JDBC-OLE 桥得到了一些增强。但是字符集和 CLOB 仍然存在一些问题。
- 您的应用程序仅限于 Microsoft Windows 操作系统。
- 根据JDK 7 JDBC-ODBC 桥接指南,JDBC-ODBC 桥接将在 JDK 8 中删除:
JDBC-ODBC 桥应被视为一种过渡解决方案;它将在 JDK 8 中删除。此外,Oracle 不支持 JDBC-ODBC 桥。Oracle 建议您使用数据库供应商提供的 JDBC 驱动程序而不是 JDBC-ODBC 桥。
因此,如果有机会为您的项目使用其他数据库,则应避免将 Microsoft Access 与 Java 一起使用。
有很多替代品具有更好的 JDBC 驱动程序。
如果你想要一个占用空间小的嵌入式数据库,有:
- Java DB(JDK 的一部分),也称为Apache Derby
- H2
- 数据库
- SQLite例如带有Xerial 驱动程序
(Java DB、H2 和 HSQLDB 是纯 Java 解决方案)
如果您更喜欢客户端服务器解决方案,那么对于大多数商业和开源来说,都存在成熟的 JDBC 驱动程序。
- 甲骨文
- Microsoft SQL Server(服务器必须在 Windows 上运行,但您的 Java 客户端可以在支持 JVM 的每个操作系统上运行。请参阅Microsoft JDBC Driver for SQL Server Support Matrix)
- PostgreSQL
- MySQL