gpt4 book ai didi

java - ResultSet 关闭后不允许操作?

转载 作者:行者123 更新时间:2023-12-01 09:56:44 24 4
gpt4 key购买 nike

据我了解,当 ResultSet 一次只能打开一次时,就会出现此问题。所以我添加了更新

try
{
String sql = "SELECT * FROM test;
ResultSet rs = stmt.executeQuery(sql);

if(rs.next()){
do {
if(rs.getString("sent").equals("0")) {
try {

//update

try {
String psSQL = "UPDATE sent SET ..........";
updateStatement = conn.prepareStatement(psSQL);
updateStatement.setString(1, ....);
updateStatement.setString(2, ....);
updateStatement.setString(3, ...);

updateStatement.executeUpdate();
System.out.println("Record updated");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
if(updateStatement != null) {
updateStatement.close();
}
if (conn != null) {
conn.close();
}
}

} catch (MessagingException mex) {
mex.printStackTrace();
}
}
} while(rs.next()); **<---- Still same Error here**
} else if (rs.getRow() == 0) {
if (!mailSender.equals(".....")) {
try{
//insert

try {
String psSQL2 = "INSERT INTO sent"
+ "(......) VALUES"
+ "(?,?,?)";
insertStatement = conn.prepareStatement(psSQL2);
insertStatement.setString(1, ...);
insertStatement.setString(2, ....);
insertStatement.setString(3, ....);

insertStatement.executeUpdate();
System.out.println("Insert done!");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
if(insertStatement != null) {
insertStatement.close();
}
if (conn != null) {
conn.close();
}
}
}catch (MessagingException mex) {
mex.printStackTrace();
}
} else {
return null;
}
}
}
catch (SQLException se)
{
se.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if (stmt != null) {
stmt.close();
}
}
catch (SQLException se2) {}
try
{
if (conn != null) {
conn.close();
}
}
catch (SQLException se)
{
se.printStackTrace();
}
}

所以.. while(rs.next()) 运行时出现错误。我在 rs.next() while 循环之前和之后放入了一个 system.out.println,并在该 while 循环之后放入了第 n 个母 pig 。

我尝试使用另一个结果集 rs2,但它也不起作用,所以我不知道这个问题是从哪里来的..

最佳答案

完成您想要的操作的更好方法是使用单个 ResultSet

  String sql = "SELECT * FROM test";
ResultSet rs = stmt.executeQuery(sql);

if(rs.next()){
do {

if (rs.getString("sent").equals("0")) {

try{
//if there is a row and it is equals to 0.. so update it to 1..

String sql2 = "UPDATE test SET test='1' WHERE test=....";
Statement updateStatement = <create statement here>;

int rs3 = updateStatement.executeUpdate();
updateStatement.close();
}catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}
}while(rs.next());
}else {
try{
//insert if i couldn't get any rows in the table
String sql2 = "INSERT INTO test......";
Statement insertStatement = <create statement here>;
int rs3 = insertStatement.executeUpdate();
insertStatement.close();
}catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}

rs.close();
stmt.close();
conn.close();

希望这有帮助。

关于java - ResultSet 关闭后不允许操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37161721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com