一, 无封装版
1,引入mysql-connector 驱动。
2,加载mysql驱动程序,有两种方式。
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
这第一种方式会加载两次驱动,所以基本不用,常用下面第二种。
Class.forName(“com.mysql.cj.jdbc.Driver”);
3,通过DriverManager 对象拿到 Connection 数据库连接对象。拿到连接对象才能和数据库打交道
4,通过连接对象,获得推送sql 语句的Statement对象。这里为了安全和使用的方便,JDBC也提供了PreparedStatement 预编译描述对象。关于两者区别:
- Statement,只提供了三种方法推送sql
- PreparedStatement ,可以使用占位符,更加安全和方便。
5,推送SQL语句
6,关闭
try{
//1,加载
Class.forName("com.mysql.jdbc.Driver");
//如果使用的mysql8, 需要使用下面这个驱动
//Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/sch_1299999?serverTimezone=UTC";
String username= "root";
String pass = "root";
//2,通过DriverManager 对象拿到 Connection 连接对象。
Connection con = DriverManager.getConnection(url,username,pass);
if(con != null){
out.println("数据库连接成功");
}else {
out.println("数据库连接失败");
}
String sql = "select * from message where number = ?";
//3,通过连接对象,获得推送sql 语句的Statement对象。
PreparedStatement preparedStatement = con.prepareStatement(sql);
preparedStatement.setString(1,number);
//4,推送SQL语句
ResultSet resultSet = preparedStatement.executeQuery();
ArrayList<message> list = new ArrayList<>();
while (resultSet.next()){
message muser = new message();
muser.setNumber(resultSet.getString("number"));
muser.setName(resultSet.getString("name"));
muser.setBirthday(resultSet.getString("birthday"));
muser.setEmail(resultSet.getString("email"));
list.add(muser);
}
//5,关闭
resultSet.close();
preparedStatement.close();
con.close();
}catch (Exception e){
e.printStackTrace();
}
二,封装util
装载部分,推送查询部分,由使用者自定义。
只封装注册,连接,关闭部分。
package util;
import java.sql.*;
public class JdbcUtil {
private static String username = "root";
private static String password = "root";
private static String url =
"jdbc:mysql://localhost:3306/sch_1299999?serverTimezone=UTC";
static {
//加载jdbc驱动,即注册部分。
try {
Class.forName("com.mysql.jdbc.Driver");
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 获得连接对象,连接部分
* @return
*/
public static Connection getConnection(){
Connection con = null;
try{
con = DriverManager.getConnection(url,username,password);
}catch (Exception e){
e.printStackTrace();
}
return con;
}
/**
*关闭部分
* @param stmt
* @param conn
*/
public static void release(Statement stmt, Connection conn){
if(stmt != null){
try {
stmt.close();
}catch (Exception e){
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
public static void release(ResultSet rs, Statement stmt, Connection conn){
if(rs != null){
try {
rs.close();
}catch (Exception e){
e.printStackTrace();
}
}
release(stmt, conn);
}
}