目录
JDBC访问数据库的步骤:
- 加载数据库驱动
- 建立数据库连接
- 创建Statement对象
- 执行SQL语句
- 访问结果集
1.加载数据库驱动
Class.forName(数据库驱动名称)
以MySQL数据库为例:
5.0版本:
Class.forName("com.mysql.jdbc.Driver");
8.0版本:
Class.forName("com.mysql.cj.jdbc.Driver");
2.建立数据库连接
DriverManager.getConnection(String url, String user, String password)
url:数据库连接字符串
user:连接数据库的用户名
password:密码
// 1.
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称",
"root",
"root")
3.创建Statement对象
通过Connection对象来获得Statement的三种方法:
Statement createStatement() | 创建一个基本的Statement对象 |
PreparedStatement preparedStatement(String sql) | 根据SQL语句创建一个预编译preparedStatement对象 |
CallbableStatement prepareCall(String sql) | 根据SQL语句创建一个CallableStatement对象,用于调用数据库的存储过程 |
// 1.
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称",
"root",
"root")
// 3.
Statement stmt = con.createStatement()
4.执行SQL语句
执行SQL语句的三种方法:
boolean execute() | 可以执行任何SQL语句,返回结果为多个结果集或多个更新计数(不推荐) |
ResultSet executeQuery() | 只能执行查询语句,产生单个结果集 |
int executeUpdate() | 执行DML(INSERT...)和DDL(CREATE TABLE...)语句,返回结果为所影响的行数, 执行DDL语句时,返回值总为0 |
// 1.
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称",
"root",
"root")
// 3.
Statement stmt = con.createStatement()
// 4.
String sql = "SELECT * FROM tb_student"; // sql语句
ResultSet rs = stmt.executeQuery(sql);
5.访问结果集
通过使用ResultSet接口的getXXX()方法访问结果集中的数据
// 1.
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称",
"root",
"root")
// 3.
Statement stmt = con.createStatement()
// 4.
String sql = "SELECT * FROM tb_student"; // sql语句
ResultSet rs = stmt.executeQuery(sql);
// 5.
while(rs.next()){
int studentNo = rs.getInt(1); // 指定第几列
String studentName = rs.getString("studentName"); // 指定列名称
System.out.println(studentNo + "---" + studentName);
}
6.关闭相关资源
数据库执行完毕之后,需要将数据库中的对象按顺序关闭
顺序如下:
- 关闭结果集
- 关闭Statement对象
- 关闭连接
// 1.
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称",
"root",
"root")
// 3.
Statement stmt = con.createStatement()
// 4.
String sql = "SELECT * FROM tb_student"; // sql语句
ResultSet rs = stmt.executeQuery(sql);
// 5.
while(rs.next()){
int studentNo = rs.getInt(1); // 指定第几列
String studentName = rs.getString("studentName"); // 指定列名称
System.out.println(studentNo + "---" + studentName);
}
// 6.
rs.close();
stmt.close();
con.close();
7.演示
数据表的数据:
import java.sql.*;
public class TestDemo {
public static void main(String[] args) {
JDBCDemo jdbc = new JDBCDemo();
}
}
class JDBCDemo{
public JDBCDemo() {
try {
// 1.
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/de?characterEncoding=gb2312&serverTimezone=UTC&useSSL=false", "root", "root");
// 3.
Statement stmt = con.createStatement();
// 4.
String sql = "SELECT * FROM tb_student"; // sql语句
ResultSet rs = stmt.executeQuery(sql);
// 5.
while(rs.next()){
int studentNo = rs.getInt(1); // 指定第几列
String studentName = rs.getString("studentName"); // 指定列名称
System.out.println(studentNo + "---" + studentName);
}
// 6.
rs.close();
stmt.close();
con.close();
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}