工具类:
package day38.utils;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
* @Author:monian
* @Wo yi wu ta,wei shou shu er!
* @Date:2023/11/14 22:28
*/
public class JDBCUtils {
@SuppressWarnings({"all"})
//定义相关的属性(4个),因为只需要一份,因此我们做出static
private static String user;//用户名
private static String password;//密码
private static String url; //url
private static String driver; // 驱动名
//static 代码块去初始化
static{
try {
Properties properties = new Properties();
properties.load(new FileInputStream("E:\\桌面\\demo\\Java\\com.hanshunping\\src\\mysql.properties"));
//读取相关的属性值
user = properties.getProperty("user");
url = properties.getProperty("url");
password = properties.getProperty("password");
driver = properties.getProperty("driver");
} catch (IOException e) {
/**实际开发中,我们可以这样处理
* 1. 将编译异常 转化 为运行异常
* 2. 调用者,可以选择捕获该异常,也可以选择默认处理该异常,比较方便
*/
throw new RuntimeException(e);
}
}
// 连接数据库,返回Connection
public static Connection getConnection(){
try {
return DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
/*
1. 将编译异常 转化 为运行异常
2. 调用者,可以选择捕获该异常,也可以选择默认处理该异常,比较方便
*/
throw new RuntimeException();
}
}
//关闭相关资源
/*
1. ResultSet 结果集
2. Statement 或者 PreparedStatement
3. Connection
4. 如果需要关闭相关资源,就传入为空,否则就传入null
*/
public static void close(ResultSet set, Statement statement,Connection connection){
//判断是否为null
try {
if(set != null){
set.close();
}
if(statement!=null){
statement.close();
}
if(connection!=null){
connection.close();
}
} catch (SQLException e) {
//将编译异常转换成运行异常
throw new RuntimeException(e);
}
}
}
使用工具类进行查询操作:
package day38.utils;
import org.junit.jupiter.api.Test;
import java.sql.*;
/**
* @Author:monian
* @Wo yi wu ta,wei shou shu er!
* @Date:2023/11/14 22:47
*/
public class JDBCUtils_UseSel {
@Test
public void testDML() throws SQLException { //insert , update ,delete
// 1.得到连接
Connection connection = null;
// 2.组织一个sql
// String sql = "update actor set name = ? where id = ?";
// String sql = "select id, `name`, sex, borndate, phone from actor";
String sql = "select id, `name`, sex, borndate, phone from actor where id = ?";
// 3. 创建一个PreparedStatement 对象
// 4. 创建一个 Resultset 结果集对象
ResultSet set =null;
PreparedStatement preparedStatement = null;
try {
connection = JDBCUtils.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 3);//查询单个信息数据
set = preparedStatement.executeQuery();
while (set.next()) {
int id = set.getInt("id");
String name = set.getString("name");
String sex = set.getString("sex");
Date borndate = set.getDate("borndate");
String phone = set.getString("phone");
System.out.println(id + "\t" + name + "\t" + sex + "\t" + borndate + "\t" + phone);
}
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
// 4. 关闭资源
JDBCUtils.close(set, preparedStatement, connection);
}
}
}
查询结果如下:
数据更新操作:
package day38.utils;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* @Author:monian
* @Wo yi wu ta,wei shou shu er!
* @Date:2023/11/14 22:47
*/
public class JDBCUtils_Use {
@Test
public void testDML() throws SQLException { //insert , update ,delete
// 1.得到连接
Connection connection = null;
// 2.组织一个sql
// String sql = "update actor set name = ? where id = ?";
String sql = "delete from actor where id = ?";
// 3. 创建一个PreparedStatement 对象
PreparedStatement preparedStatement = null;
try {
connection = JDBCUtils.getConnection();
preparedStatement = connection.prepareStatement(sql);
// preparedStatement.setString(1, "马宝国");
// preparedStatement.setInt(2, 4);
preparedStatement.setInt(1, 2);
preparedStatement.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException(e);
}finally {
// 4. 关闭资源
JDBCUtils.close(null, preparedStatement, connection);
}
}
}