返回信息流因为某些原因,我们需要编写java程序访问ubuntu下的mdb文件。
这里有一个奇怪的问题:
成功安装unixODBC和mdbtools后,用mdbtools携带的命令行能够正常查询ubuntu下的mdb文件;用unixODBC自带的isql命令行连接该文件也是成功的。
但是,java代码里的访问总是以失败告终,错误如下:
java.sql.SQLException: [unixODBC][Driver Manager]Data source name not found, and no default driver specified
是不是因为这种情况下,下面这种通行在windows里的写法不能用?——即,不能简单的将DBQ改成linux下的路径?还是说,更糟糕的是unixODBC根本没有引入任何Access的odbc驱动?(但我想后者应该不成立吧,不然那个命令行的数据库连接是怎么成功的?)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String strurl = "jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb);DBQ=/home/cat/config.mdb";
java.sql.Connection c = DriverManager.getConnection(strurl, "", "");
java.sql.Statement st = c.createStatement();
java.sql.ResultSet rs = st.executeQuery("select * from Mine");
拜谢!
这是一条镜像帖。来源:北邮人论坛 / java / #17329同步于 2011/3/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【求助】java程序访问linux下的mdb文件该怎么写?
wisteria00
2011/3/1镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
为什么是odbc的驱动,而不是jdbc的驱动,你说的工具没用过,不过看代码,若有问题,应该出在"sun.jdbc.odbc.JdbcOdbcDriver""jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb);DBQ=/home/cat/config.mdb"中,你仔细看看数据库给的文档,上面会提供jdbc的接口,mySQL是这样的,不过你的数据库的账号和密码都为空吗。 仅仅是个人的猜想,希望能有点帮助,若有不对的地方,请指教。
【 在 slacker 的大作中提到: 】
: 为什么是odbc的驱动,而不是jdbc的驱动,你说的工具没用过,不过看代码,若有问题,应该出在"sun.jdbc.odbc.JdbcOdbcDriver""jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb);DBQ=/home/cat/config.mdb"中,你仔细看看数据库给的文档,上面会提供jdbc的接口,mySQL是这样的,不过你的数据库的账号和密码都为空吗。 仅仅是个人的猜想,希望能有点帮助,若有不对的地方,请指教。
: --
谢谢,答复。我查到的是:
这种写法是windows下用java访问access的通用写法;虽然还有一种是在系统某处指定ODBC数据源,然后直接把connectiong string写成jdbc:odbc:数据源名字;这种虽然看起来连接数据源成功,但是createStatement()会抛出java.sql.SQLException: The result set type is not supported.
另外,access的mdb文件访问确实可以不用用户名和密码。