what
全称Java Database Connectivity,JDBC是一种用于Java编程语言和多种数据库连接的标准Java API。
JDBC库提供的API可以完成如下的数据库相关的任务:
- 和数据库建立连接。
- 创建 SQL 或 MySQL 声明。
- 在数据库中执行 SQL 或 MySQL 查询。
- 展示或修改数据库中的记录。
JDBC实现了将Java编程代码和数据库相分离,使得Java编写的可执行程序可以通过同样的JDBC API连接不同的数据库,改变数据库驱动不需要改变JDBC API,使得代码书写更加灵活。
组件
JDBC API 提供了以下接口和类以便使用:
- DriverManager:该类被用于管理数据库驱动。当Java应用发送一个数据库连接请求时,会伴随一个对应数据库的驱动连接子协议。这个协议会通过DriverManager发送到各个Driver,而第一个识别该协议的Dirver会在对应的数据库和JDBC接口间建立连接。
- Driver:驱动接口负责处理与数据库服务器之间的通信。Java编程人员很少会直接使用到这个接口,这是用于DriverManager类在管理着Driver接口。
- Connection:这个接口包含了所有连接数据库相关的方法。一个connection对象会包含了和数据库通信的上下文等信息。所有与数据库相关的通信都且仅需要通过connection对象。
- Statement:该接口负责将Java代码中嵌入的SQL语句提交到数据库,另外还有一些派生出的接口可以完成参数的传递和存储过程的执行。
- ResultSet:通过Statement对象执行的查询语句的查询结果将被通过ResultSet对象从数据库取回。ResultSet对象可以像迭代器一样去操作数据。
- SQLException:这个类用来处理数据库应用中出现的各种错误。
案例
import java.sql.*;
public class JDBCDemo {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String JDBC_URL = "jdbc:mysql://localhost:3306/test";
static final String USER = "userName";
static final String PASSWORD = "pwd";
public static void main(String[] args) throws SQLException {
Connection connection = null;
Statement statement = null;
try{
//step 1:Register JDBC driver
Class.forName(JDBC_DRIVER);
//step 2:Open a connection
connection = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
//step 3: Execute a query
statement = connection.createStatement();
String sql = "SELECT id, user_name FROM user";
ResultSet rs = statement.executeQuery(sql);
//step 4: Extract data from result set
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("user_name");
System.out.println("id:"+ id +"name:"+name);
}
rs.close();
}catch (Exception e){
e.printStackTrace();
}finally {
statement.close();
connection.close();
}
}
}