Java SQLException:结果集关闭后不允许操作
我正在用Java SQLException:结果集关闭后不允许操作,java,mysql,sql,database,Java,Mysql,Sql,Database,我正在用MySQL和Java一起使用,试图制作shoppingcartDB,并且我正在尝试删除已经过了30天订购时间的元组 但编译器说: 线程“main”java.sql.SQLException中出现异常:结果集关闭后不允许操作 我怎样才能解决这个问题 代码: 引发异常的代码行是: stmt.executeUpdate(“从篮子中删除,其中orderdate='”+Odate+“;”) 您可以在一个时刻执行一条语句,最佳选项是关闭(stmt.close())第一条语句并运行第二条语句您可以在一
MySQL
和Java
一起使用,试图制作shoppingcartDB,并且我正在尝试删除已经过了30天订购时间的元组
但编译器说:
线程“main”java.sql.SQLException中出现异常:结果集关闭后不允许操作
我怎样才能解决这个问题
代码:
引发异常的代码行是:
stmt.executeUpdate(“从篮子中删除,其中orderdate='”+Odate+“;”) 您可以在一个时刻执行一条语句,最佳选项是关闭(
stmt.close()
)第一条语句并运行第二条语句您可以在一个时刻执行一条语句,最佳选项是关闭(stmt.close()
)使用第一条语句并运行第二条语句,您只需使用两条语句,第一条语句用于选择记录,第二条语句用于删除所需的记录
public static void checkBasketdate() throws Exception {
//Connect to MySQL:
Connection con = makeConnection();
Statement stmt = con.createStatement();
Statement stmtDelete = con.createStatement();
ResultSet rs1 = stmt.executeQuery("SELECT * FROM basket ;");
while (rs1.next()) {
Date Odate = rs1.getDate("orderdate");
long diff = datediffOfDate(Odate);
System.out.println(Odate);
if (diff > 30) {
//This is where the Exception is thrown:
stmtDelete.executeUpdate("DELETE FROM basket WHERE orderdate = '" + Odate + "';");
System.out.println("=>orderdate has been passed 30 days, so delete it");
}
}
stmnt.close();
stmntDelete.close();
}
您可以简单地使用两条语句,第一条语句选择记录,第二条语句删除所需的记录
public static void checkBasketdate() throws Exception {
//Connect to MySQL:
Connection con = makeConnection();
Statement stmt = con.createStatement();
Statement stmtDelete = con.createStatement();
ResultSet rs1 = stmt.executeQuery("SELECT * FROM basket ;");
while (rs1.next()) {
Date Odate = rs1.getDate("orderdate");
long diff = datediffOfDate(Odate);
System.out.println(Odate);
if (diff > 30) {
//This is where the Exception is thrown:
stmtDelete.executeUpdate("DELETE FROM basket WHERE orderdate = '" + Odate + "';");
System.out.println("=>orderdate has been passed 30 days, so delete it");
}
}
stmnt.close();
stmntDelete.close();
}
还值得注意的是,
rs1.next()
如果在ResultSet
中找不到任何返回的内容,它将关闭连接。您应该检查数据库,看看里面是否有数据。还值得注意的是,rs1.next()
如果在ResultSet
中找不到任何返回的内容,它将关闭连接。你应该检查你的数据库,看看里面是否有数据。