本文是 JDBC 系列文章的第二篇,本文将从 JDBC 是什么、JDBC 的用途、JDBC 主要提供的接口或类有哪些、如何使用 JDBC 等方面进行描述,希望能全面的了解 JDBC,由于本人菜鸟一枚,文中若有错误之处,还请各位朋友批评指正,感谢大家花费时间阅读。
1. JDBC是什么
JDBC(Java Database Connectivity, Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
——百度百科
从百度百科提供的解释中可以知道,JDBC 为我们提供了访问数据库的统一标准,开发人员无需针对不同的数据库编写不同的程序代码,只需提供一份代码,在变更数据库的时候切换对应的数据库驱动即可。
使用 JDBC 提供的 API,我们可以对数据库进行以下操作: * 建立数据库连接 * 执行数据库 SQL 语句 * 处理数据库结果
JDBC 可以使用在任何需要数据库操作的程序中,当然也可以使用它的更高层次的封装框架,如Spring
、Hibernate
、MyBatis
等。
2. 主要接口和类
JDBC 提供了操作数据库的统一接口,主要包括以下接口和类:
2.1 Connection
A connection (session) with a specific database. SQL statements are executed and results are returned within the context of a connection. ——java.sql.Connection
该接口是数据库通信的上下文,所有的数据库操作都是通过该上下文完成的。内部提供了创建 Statement 的方法和事务管理的相关方法。
2.2 Driver
该接口是数据库的驱动接口,数据库厂商必须保证该接口足够小,能够被一次性加载,通过该接口可以获取数据库的属性信息,也可以用于创建 Connection,但一般不这么使用。通常使用 DriverManager 来管理 Driver,DriverManager 可以同时管理多个 Driver,并根据需要
2.3 DriverManager
该类用于管理数据库驱动程序的列表。可以获取被管理的每个 Driver 的信息,也可以通过 Driver 列表中的指定 Driver 来获取数据库连接。
2.4 Statement
The object used for executing a static SQL statement and returning the results it produces. ——java.sql.Statement
该接口用于执行静态 SQL 语句,PreparedStatement 子接口用于执行动态 SQL 语句,CallableStatement 子接口用于执行存储过程或函数。
2.5 ResultSet
A table of data representing a database result set, which is usually generated by executing a statement that queries the database. ——java.sql.ResultSet
该接口用于对数据库结果集,将结果集转换成需要的对象类型。
上述这些接口或类位于java.sql
包中,大家可以自行查阅,当然包中还涉及一些类型的定义以及异常等。
在 ** JDBC 4.0 **中新增了一些接口和类,被放在javax.sql
包中。其中最重要的就是DataSource
接口及PooledConnection
接口,前者用于获取数据库连接,后者提供了数据库连接池管理需要的方法。
3. How-to-use
下面以一个 Hello World
级别的例子来介绍如何使用 JDBC 操作数据库。
- 首先建立数据库及数据表,并在表中添加数据。
CREATE DATABASE jdbc;
use jdbc;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `users` VALUES ('1', 'Michel'), ('2', 'Jay'),
('3', 'Micheal'), ('4', 'Curry');
- 创建Java项目,并添加下列代码
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class HelloWorld {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
String sql = "SELECT id, name FROM users";
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jdbc",
"root",
"123456");
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id = " + id + " name = " + name);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
项目详见【jdbc_demo】