判断rs不为空,但是rs.next却会报错,控制台显示的是rs.next和rs = pstmt.executeQuery()这两句报错,找了好久不知道错在哪里
使用结果集之前,你已经 关闭了结果集了,当然有问题了
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author huazie
* @version 2.0.0
* @since 2.0.0
*/
public class DBUtil {
private DBUtil() {
}
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
// 打印异常
}
}
/**
* 获取数据库连接对象
*
* @param url 数据库URL
* @param name 用户名
* @param pwd 密码
* @return 数据库连接对象
*/
public static Connection getConnection(String url, String name, String pwd) throws SQLException {
return DriverManager.getConnection(url, name, pwd);
}
/**
* <p> 释放连接Connection </p>
*
* @param conn 数据库连接对象
*/
private static void closeConnection(Connection conn) {
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
// 打印异常
}
}
/**
* <p> 释放statement </p>
*
* @param statement Statement对象
*/
private static void closeStatement(Statement statement) {
try {
if (null != statement) {
statement.close();
}
} catch (SQLException e) {
// 打印异常
}
}
/**
* <p> 释放ResultSet结果集 </p>
*
* @param rs 结果集对象
*/
private static void closeResultSet(ResultSet rs) {
try {
if (null != rs) {
rs.close();
}
} catch (SQLException e) {
// 打印异常
}
}
/**
* <p> 释放资源 </p>
*
* @param conn 数据库连接对象
* @param statement 数据库状态对象
* @param rs 数据库结果集对象
*/
public static void close(Connection conn, Statement statement, ResultSet rs) {
closeResultSet(rs);
closeStatement(statement);
closeConnection(conn);
}
/**
* <p> 释放连接 </p>
*
* @param conn 数据库连接对象
*/
public static void close(Connection conn) {
closeConnection(conn);
}
/**
* <p> 释放状态 </p>
*
* @param statement 数据库状态对象
*/
public static void close(Statement statement) {
closeStatement(statement);
}
/**
* <p> 释放结果集 </p>
*
* @param rs 数据库结果集对象
*/
public static void close(ResultSet rs) {
closeResultSet(rs);
}
}