JDBC访问数据库的步骤:
- 加载驱动类
static{
//1.注册驱动程序--只执行一次即可
//driverManager直接注册驱动程序,获取connection对象
try {
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
- 创建数据库连接对象
public static Connection getConnection(){
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false";
String name = "root";
String password = "123321";
Connection conn = null;
try {
//获取类型从而注册
//Class.forName("com.mysql.jdbc.Driver");
//获取Conncetion接口的实例,并不知道实现类,屏蔽实现的细节
conn = DriverManager.getConnection(url, name, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
- 创建一个Statement语句对象
Statement stmt = conn.createStatement();
- 执行sql命令,除了查询语句其他都用executeUpdate()
String sql = "select * from user";
try {
ResultSet rs=stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
- 处理结果集:
while (rs.next()) {
user.setId(rs.getLong(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
userList.add(user);
}
- 关闭资源。考点:关闭资源的时候要总里往外关闭
先关闭先关闭结果集,再关闭声明的对象,最后再关闭连接
//关闭操作:对所有打开的资源进行关闭
public static void close(Connection conn, Statement st, PreparedStatement ps, ResultSet rs){
try {
if(rs != null)
//关闭结果集
rs.close();
if(st != null)
//关闭声明的对象
st.close();
if(ps != null)
//关闭声明的对象
ps.close();
if(conn != null)
//关闭连接
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
整体代码:
package com.demo;
import com.demo.entity.User;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class DBUtils {
static {
//1.注册驱动程序--只执行一次即可
//driverManager直接注册驱动程序,获取connection对象
try {
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() {
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false";
String name = "root";
String password = "123321";
Connection conn = null;
try {
//获取类型从而注册
//Class.forName("com.mysql.jdbc.Driver");
//获取Conncetion接口的实例,并不知道实现类,屏蔽实现的细节
conn = DriverManager.getConnection(url, name, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//关闭操作:对所有打开的资源进行关闭
public static void close(Connection conn, Statement st, PreparedStatement ps, ResultSet rs) {
try {
if (rs != null)
rs.close();
if (st != null)
st.close();
if (ps != null)
ps.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static List executeSQL() throws SQLException {
Connection conn = getConnection();
Statement stmt = conn.createStatement();
String sql = "select * from user";
List userList = new ArrayList<>();
try {
ResultSet rs = stmt.executeQuery(sql);
User user = new User();
while (rs.next()) {
user.setId(rs.getLong(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
userList.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(conn, stmt, null, null);
}
return userList;
}
public static void main(String[] args) throws SQLException {
List userList = executeSQL();
userList.forEach(System.out::println);
}
}



