|
|
package javabean;
|
|
|
|
|
|
import java.sql.Connection;
|
|
|
import java.sql.DriverManager;
|
|
|
import java.sql.PreparedStatement;
|
|
|
import java.sql.ResultSet;
|
|
|
import java.sql.SQLException;
|
|
|
|
|
|
public class Base {
|
|
|
// 数据库连接信息
|
|
|
private static String driver = "com.mysql.cj.jdbc.Driver";
|
|
|
private static String url = "jdbc:mysql://localhost:3306/library?&useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8";
|
|
|
private static String username = "root";
|
|
|
private static String password = "root";
|
|
|
|
|
|
/**
|
|
|
* 获取数据库连接
|
|
|
*
|
|
|
* @return 返回数据库连接对象
|
|
|
* @throws ClassNotFoundException 如果未找到JDBC驱动类
|
|
|
*/
|
|
|
public static Connection getConnection() throws ClassNotFoundException {
|
|
|
Connection connection = null;
|
|
|
try {
|
|
|
// 加载数据库驱动
|
|
|
Class.forName(driver);
|
|
|
// 获取数据库连接
|
|
|
connection = DriverManager.getConnection(url, username, password);
|
|
|
} catch (SQLException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return connection;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 公共查询方法,用于执行SELECT语句
|
|
|
*
|
|
|
* @param connection 数据库连接对象
|
|
|
* @param preparedStatement 执行查询的PreparedStatement对象
|
|
|
* @param resultSet 查询结果集
|
|
|
* @param sql 执行的SQL语句
|
|
|
* @param params SQL语句的参数值(可以为null)
|
|
|
* @return 返回查询结果集
|
|
|
* @throws SQLException 如果SQL执行过程中发生错误
|
|
|
*/
|
|
|
public static ResultSet executequery(Connection connection, PreparedStatement preparedStatement,
|
|
|
ResultSet resultSet, String sql, Object[] params) throws SQLException {
|
|
|
if (preparedStatement == null) {
|
|
|
// 如果PreparedStatement为null,则创建新的PreparedStatement对象
|
|
|
preparedStatement = connection.prepareStatement(sql);
|
|
|
}
|
|
|
// 设置SQL语句中的参数
|
|
|
for (int i = 0; params != null && i < params.length; i++) {
|
|
|
preparedStatement.setObject(i + 1, params[i]);
|
|
|
}
|
|
|
// 执行查询并返回结果集
|
|
|
resultSet = preparedStatement.executeQuery();
|
|
|
return resultSet;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 公共修改方法,用于执行INSERT、UPDATE或DELETE语句
|
|
|
*
|
|
|
* @param connection 数据库连接对象
|
|
|
* @param preparedStatement 执行修改的PreparedStatement对象
|
|
|
* @param sql 执行的SQL语句
|
|
|
* @param params SQL语句的参数值(可以为null)
|
|
|
* @return 返回受影响的行数
|
|
|
* @throws SQLException 如果SQL执行过程中发生错误
|
|
|
*/
|
|
|
public static int executeUpdate(Connection connection, PreparedStatement preparedStatement, String sql,
|
|
|
Object[] params) throws SQLException {
|
|
|
if (preparedStatement == null) {
|
|
|
// 如果PreparedStatement为null,则创建新的PreparedStatement对象
|
|
|
preparedStatement = connection.prepareStatement(sql);
|
|
|
}
|
|
|
// 设置SQL语句中的参数
|
|
|
for (int i = 0; params != null && i < params.length; i++) {
|
|
|
preparedStatement.setObject(i + 1, params[i]);
|
|
|
}
|
|
|
// 执行更新语句,返回更新的行数
|
|
|
int updateRows = preparedStatement.executeUpdate();
|
|
|
return updateRows;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 释放数据库连接相关的资源
|
|
|
*
|
|
|
* @param connection 数据库连接对象
|
|
|
* @param preparedStatement 执行的PreparedStatement对象
|
|
|
* @param resultSet 查询结果集
|
|
|
* @return 如果资源成功关闭返回true,否则返回false
|
|
|
* @throws SQLException 如果关闭资源时发生错误
|
|
|
*/
|
|
|
public static boolean closeResource(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet)
|
|
|
throws SQLException {
|
|
|
boolean flag = true;
|
|
|
|
|
|
// 关闭ResultSet资源
|
|
|
if (resultSet != null) {
|
|
|
try {
|
|
|
resultSet.close();
|
|
|
resultSet = null;
|
|
|
} catch (SQLException e) {
|
|
|
e.printStackTrace();
|
|
|
flag = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 关闭PreparedStatement资源
|
|
|
if (preparedStatement != null) {
|
|
|
try {
|
|
|
preparedStatement.close();
|
|
|
preparedStatement = null;
|
|
|
} catch (SQLException e) {
|
|
|
e.printStackTrace();
|
|
|
flag = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 关闭数据库连接资源
|
|
|
if (connection != null) {
|
|
|
try {
|
|
|
connection.close();
|
|
|
connection = null;
|
|
|
} catch (SQLException e) {
|
|
|
e.printStackTrace();
|
|
|
flag = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 返回资源关闭的状态
|
|
|
return flag;
|
|
|
}
|
|
|
}
|