从 Java 访问 MS-Access 数据库






3.78/5 (8投票s)
本文演示如何从 Java 访问 MS Access 数据库。
引言
本文解释如何使用 JDBC ODBC 桥从 Java 应用程序访问 MS-Access 数据库。我们不赘述数据库的基础知识,直接进入主题。
ODBC 驱动程序
在 Java 中,我们需要在运行时加载一个驱动程序才能连接到任何数据源。ODBC 数据源也是如此。驱动程序实现为一个在运行时定位和加载的类。用于 JDBC 连接的 ODBC 驱动程序名为sun.java.odbc.JdbcOdbcDriver
。
ODBC 连接字符串
与 Visual C++ 一样,我们需要一个 ODBC 连接字符串才能连接到数据源。例如,假设我们正在编写一个连接到应用程序目录中名为 *myDB.mdb* 的 Access 数据库文件的 VC++ 程序。我们将使用如下 ODBC 连接字符串:
"Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;"
在 Java 中,我们将编写类似的连接字符串,但是会添加一个指向连接所需驱动程序的规范,即jdbc:odbc:
。然后,在其后加上连接字符串。因此,Java 中的连接字符串变为:
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=myDB.mdb;"
因此,为了概括以上内容,要能够连接到 ODBC DSN,我们需要以下形式的连接字符串:
"jdbc:odbc:ODBC DSN String"
导入连接到数据库的类
包含数据库相关类的包在java.sql
中。因此,我们按如下方式导入:
import java.sql.*;
加载 JDBC:ODBC 驱动程序
按如下方式动态加载类sun.java.odbc.JdbcOdbcDriver
:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
在应用程序空间中打开 MS-Access 数据库文件
为此,我们使用上面指定的 ODBC DSN
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;";
Connection conn = DriverManager.getConnection(database, "", "");
创建一个 Statement 对象来执行 SQL 查询
必须创建Statement
对象才能在打开的数据库上执行 SQL 查询。使用以下代码完成:
Statement s = conn.createStatement();
完成工作后进行清理
完成 SQL 查询后,我们调用s.close()
来释放Statement
对象。然后,在我们结束程序之前或在我们决定不再需要数据库之后,我们通过调用conn.close()
来关闭数据库。以下代码在我们完成后进行清理:
s.close(); // Close the statement
conn.close(); // Close the database. Its no more required
在有效的 Statement 对象上执行 SQL 语句
当需要执行 SQL 查询时,调用s.execute("SQL statement")
。它返回查询影响的行数。如果最后一个查询包含要返回的ResultSet
(通常发生在SELECT ...
类型的查询中),则调用s.getResultSet()
,它返回ResultSet
对象。以下代码显示如何使用SELECT
查询并显示表前两列中包含的值。
String selTable = "SELECT * FROM SOMETABLE";
s.execute(selTable);
ResultSet rs = s.getResultSet();
while((rs!=null) && (rs.next()))
{
System.out.println(rs.getString(1) + " : " + rs.getString(2));
}
就是这样。现在让我们来看一个演示应用程序,它阐明了我上面写的所有内容。
一个示例应用程序
以下应用程序执行以下操作:
- 加载 JDBC ODBC 驱动程序。
- 打开 ODBC 数据源,打开应用程序工作目录中存在的 *myDB.mdb* 文件。
- 获取用于 SQL 执行的
Statement
对象。 - 使用随机数生成器生成表名。
- 创建表。
- 向其中输入 25 个随机条目。
- 显示表的内容。
- 删除或删除创建的表。
- 关闭
Statement
对象,然后关闭与数据库的连接。
这是所需的代码
/* Program:
* Setup database driver manager to understand and use ODBC MS-ACCESS data source.
* Written by Arnav Mukhopadhyay (ARNAV.MUKHOPADHYAY@smude.edu.in)
* Compile as: javac dbAccess.java
*/
import java.sql.*;
public class dbAccess
{
public static void main(String[] args)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database =
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;";
Connection conn = DriverManager.getConnection(database, "", "");
Statement s = conn.createStatement();
// create a table
String tableName = "myTable" + String.valueOf((int)(Math.random() * 1000.0));
String createTable = "CREATE TABLE " + tableName +
" (id Integer, name Text(32))";
s.execute(createTable);
// enter value into table
for(int i=0; i<25; i++)
{
String addRow = "INSERT INTO " + tableName + " VALUES ( " +
String.valueOf((int) (Math.random() * 32767)) + ", 'Text Value " +
String.valueOf(Math.random()) + "')";
s.execute(addRow);
}
// Fetch table
String selTable = "SELECT * FROM " + tableName;
s.execute(selTable);
ResultSet rs = s.getResultSet();
while((rs!=null) && (rs.next()))
{
System.out.println(rs.getString(1) + " : " + rs.getString(2));
}
// drop the table
String dropTable = "DROP TABLE " + tableName;
s.execute(dropTable);
// close and cleanup
s.close();
conn.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
这就是我所有要说的!