2.1.2 JDBC操作数据库的步骤

优质
小牛编辑
125浏览
2023-12-01

在上一节介绍了操作数据库的一般步骤。本节就以JDBC为例来一一对照这些步骤操作MySQL数据库。JDBC操作数据库的步骤如下:

1. 装载数据库驱动:这一步对于JDBC来说是必须的。用JDBC装载数据库驱动有两种方法。

(1)使用Class.forName方法

forName是Class类的一个静态方法,返回Class对象。它有一个字符串类型的参数,需要传入一个JDBC驱动类名,如下面代码所示:

Class.forName("com.mysql.jdbc.Driver");

其中com.mysql.jdbc.Driver为MySQL的JDBC驱动类名。

(2)静态创建JDBC驱动类实例

不仅可以使用forName动态装载JDBC驱动类,也可以直接使用new关键字静态创建JDBC驱动类对象,代码如下:

Driver myDriver = new com.mysql.jdbc.Driver();

DriverManager.registerDriver(myDriver);

其中registerDriver是DriverManager类的静态方法,用于注册创建的JDBC驱动类对象。

2. 建立数据库连接:在JDBC中,可以使用DriverManager类的getConnection方法获得数据库连接对象。在获得数据库连接对象之前,需要知道如下五种信息:

(1)数据库服务器名:localhost

(2)端口号:省略

(3)数据库名:jdbcdemo

(4)用户名:root

(5)密码:1234

由于MySQL使用了默认的端口号(3306),因此,端口号信息可被省略。MySQL的连接字符串格式如下:

jdbc:mysql://servername/dbname?parameter

按着上面的信息依次填入这个连接字符串,填完后的连接字符串如下:

jdbc:mysql://localhost/

jdbcdemo?user=root&password=1234&characterEncoding=UTF8

由于需要在数据库中处理中文,所以在连接字符串的最后需要加上“characterEncoding=UTF8”,以保证正确处理中文。获得数据连接对象的代码如下:

String connStr = "jdbc:mysql://localhost/mydb?" +

"user=root&password=1234&characterEncoding=UTF8";

Connection conn = DriverManager.getConnection(connStr);

我们也可以不在连接字符串中指定用户名和密码,而使用getConnection方法的另外一个重载形式传递用户名和密码,代码如下:

String connStr = "jdbc:mysql://localhost/

 mydb?characterEncoding=UTF8";

Connection conn = DriverManager.getConnection(connStr, "root",

"1234");

除此之外,也可以使用Connection类的setCatalog方法改变当前数据库,代码如下:

conn.setCatalog("newdb");

3. 获得用于进行数据操作的对象:在JDBC中可以使用Statement对象和PreparedStatement对象来操作数据库。在本节只介绍Statement对象,PreparedStatement对象将在2.4.2节介绍。Statement对象可以通过Connection接口的createStatement方法创建,createStatement方法有三种重载形式,在本节中只介绍一种无参数的重载形式。创建Statement对象的代码如下:

Statement stmt = conn.createStatement();

通过Statement对象可以对数据库进行查询、增、删、改等操作。在本节只介绍Statement接口的两个方法:execute和executeQuery。Statement接口的其他方法将在后面的章节介绍。

execute方法一般用于执行DDL(CREATE、DROP等)语句,或是执行INSERT、UPDATE、DELETE等语句,如下面代码所示:

Statement stmt = conn.createStatement();
 
stmt.execute("DROP TABLE IF EXISTS t_books");   

executeQuery一般用于执行SELECT语句。这个方法通过一个ResultSet对象返回查询结果, 代码如下:

Statement stmt = conn.createStatement();

ResultSet result = stmt.executeQuery("SELECT * FROM t_books"); 

4. 关闭数据库:最后一步就是关闭数据库。也就是关闭Connection对象。但建议在关闭Connection对象之前,应先关闭Statement对象,代码如下:

stmt.close();

conn.close();