通过 JDBC 访问 Access(使用 ODBC?)

Posted

技术标签:

【中文标题】通过 JDBC 访问 Access(使用 ODBC?)【英文标题】:Accessing Access over JDBC (using ODBC?) 【发布时间】:2010-11-27 23:25:24 【问题描述】:

我正在寻找一种在 Java 应用程序中打开 Access MDB 文件的方法(使用 JDBC)。

快速的 Google 搜索表明我需要 JDBC-ODBC 桥...

这是否意味着我需要配置每个我想在其上运行我的应用程序的系统,以便为我想打开的 MDB 提供一个 ODBC DSN?

还有一个问题(因为我以前从未使用过 ODBC):通信是通过某种套接字(以客户端/服务器样式)还是通过方法/函数调用(例如使用嵌入式 Derby db)?

【问题讨论】:

【参考方案1】:

1) 您无需为每个系统配置 SYSTEM 或 USER ODBC DSN 即可访问所需的 MDB。您仍然可以在 JDBC URL 中提供您需要的所有信息:

jdbc:odbc:Driver=Microsoft Access Driver (*.mdb);DBQ=c:/yourdb.mdb

但请记住,系统需要安装您正在使用的驱动程序。

2) 通信将按照您的 ODBC 驱动程序通信的方式进行。如果它打开一个到服务器的套接字(发生 Oracle ODBC 连接的方式),它将打开一个套接字。如果它使用库函数调用,它将通过库函数调用进行通信。

JDBC 到 ODBC 的通信使用 JNI 进行通信。

【讨论】:

我猜你可能有一个 JDBC 代理驱动程序。也就是说,一个 JDBC 驱动程序通过套接字连接到另一个 Java 进程,然后该进程在真正的 JDBC 驱动程序(JDBC-ODBC 桥)上执行调用。我认为 JDBC、OBDC 和 UDBC 存在这样的事情。 @Buttercup:我发布的具体代码仅适用于 Windows。但是你仍然可以在 Linux 下使用 JDBC-ODBC 桥接器(当然前提是你已经安装了 ODBC)。 @Tin Hawtin:我认为您指的是 JDBC Type 3(中间件)驱动程序。

以上是关于通过 JDBC 访问 Access(使用 ODBC?)的主要内容,如果未能解决你的问题,请参考以下文章

通过 Java jdbc odbc 连接到 Access 文件期间出现“超出系统资源”

JDBC 驱动程序 MS Access 连接

使用JDBC-ODBC连接Access数据库

如何在 java 中访问 microsoft access 数据库 (1997)

通过链接到 Access 数据库的 ODBC 数据源进行缓慢的数据访问

如何使用 MS Access 实现 Java Persistence Api?