Java数据库连接与操作示例

Java应用程序中,与数据库的交互是常见的需求。本文将介绍如何在Java中使用JDBC-ODBC桥接驱动程序来连接操作数据库。将跳过数据库的基础知识,直接进入主题。

ODBC驱动程序

Java中,为了在运行时连接到任何数据源,需要加载一个驱动程序。对于ODBC数据源也是如此。驱动程序被实现为一个类,在运行时被定位和加载。JDBC连接的ODBC驱动程序名称为sun.jdbc.odbc.JdbcOdbcDriver

ODBC连接字符串

类似于在Visual C++中,需要一个ODBC连接字符串来连接到数据源。例如,如果正在编写一个连接到名为myDB.mdb的Access数据库文件的VC++程序,会使用如下的ODBC连接字符串:

"Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;"

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.jdbc.odbc.JdbcOdbcDriver,如下所示:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

打开MS-Access数据库文件

使用上述指定的ODBCDSN来完成此操作

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(); // 关闭语句 conn.close(); // 关闭数据库,不再需要

在有效的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)); }

以下应用程序执行以下操作

  • 加载JDBCODBC驱动程序。
  • 打开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(); } } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485