我正在尝试执行一个更新:
如果当前时间晚于拍卖结束时间(即不活动),则设置 status
表的列 auctions
至 0
. 否则,设置为“1”。
rs = st.executeQuery("select * from auctions");
System.out.println("### TESTING DATETIMES ####");
while(rs.next()){
Timestamp start = rs.getTimestamp("startdatetime");
Timestamp current = Timestamp.valueOf(LocalDateTime.now().format(formatter));
Timestamp end = rs.getTimestamp("enddatetime");
int auctionID = rs.getInt("aucID");
System.out.println(start);
System.out.println(current);
System.out.println(end);
boolean inactive = current.after(end);
System.out.println(inactive);
if(current.after(end)){
System.out.println("Inactive");
st.executeUpdate("UPDATE auctions SET status='inactive' WHERE aucID=" + auctionID);
}else{
System.out.println("Active");
st.executeUpdate("UPDATE auctions SET status='active' WHERE aucID=" + auctionID);
}
}
我一直在犯这个错误。。
javax.servlet.servletexception:java.sql.sqlexception:结果集关闭后不允许操作
我该怎么去修理这样的东西?
2条答案
按热度按时间wa7juj8i1#
尝试使用
executeUpdate()
使用后ResultSet
. 分配auctionID
s到ArrayList
然后迭代。olmpazwi2#
您甚至不需要在此处执行select,您可以执行单个update语句:
但是,我一般不建议使用这种方法,因为active/inactive标签是派生数据,可能不会插入。相反,您可能被迫多次运行此更新,这不是最佳的。相反,您可以随时选择此标签。
您得到的确切错误是由于尝试使用
ResultSet
在它被关闭之后。我的建议应该消除这一点,因为这样你只需要一次更新,类似这样: