我已经创建了我的应用程序,并在windows下对其进行了测试,它可以对access DB文件进行读写。
但在现实世界中,它将在linux环境中运行,我现在有一个很大的问题,它似乎没有linux访问ms access数据库的驱动程序,下面是我如何连接的:
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)发布于 2011-04-22 00:18:28
在Linux上运行应用程序访问MS access数据库或使用ODBC是很少见的。ODBC是一种windows技术。linux有一些选择,但这不是一个常见的场景。
正如您已经发现的,您的linux机器上没有访问ODBC驱动程序,因此JDBC-ODBC桥失败。您也许能够安装一个合适的ODBC驱动程序,但我不知道有哪些是免费或开源的。linux的实际ODBC选项是:
基于UnixODBC的商业访问驱动程序:
一个可以连接到Access数据库的Type4JDBC驱动程序:
我对这些都没有亲身经历。Type4JDBC驱动程序将是理想的,但我怀疑它是否像宣传的那样完美。
(我相信您是有原因的,但我想知道,如果您计划部署到Linux机器上,为什么还要使用Access数据库。我认为让Java应用程序使用Access数据库的唯一好理由是,如果它是一个现有的Access应用程序,并且具有用于Java应用程序以外的目的的自定义编程。除此之外,还有许多更好的选择。还要考虑到,如果使用Access的主要原因只是为了将Access用作用户友好的表单和报表图形用户界面工具,那么您仍然可以将数据存储在限制较少的数据库(Derby、SQLLite、MySQL、PostgreSQL、MS SQL Server等)中,然后从Access通过ODBC连接到数据库。)这将允许您在linux上部署Java应用程序,在任何最有意义的地方部署数据库,并且仍然使用Access从windows连接到数据库。我已经做过很多次了。)
发布于 2011-09-08 22:49:08
使用http://jackcess.sourceforge.net/
您可以使用Java从Linux或Windows读取/写入Acceess数据库。
发布于 2011-04-22 01:02:29
如果你坚持使用Access,但你与数据库文件的交互非常“简单”(例如,你不是在做复杂的SQL查询),你可以使用像Jackcess这样的东西。它是一个纯java库,允许您操作Access数据库,但它不提供jdbc接口,因此您必须使用Jackcess api编写代码。
(免责声明,我是一个jackcess开发人员)
https://stackoverflow.com/questions/5742322
复制相似问题