以下是我的代码(重新构造),该代码根据条件选择并更新“状态”字段。(使用Servlet,Oracle作为后端和JDBC驱动程序)
ResultSet rs=null;
String query = "select A.NAME, A.ADDRESS, A.STATUS, B.CLASS from TABLE_ONE A, TABLE_TWO B where A.STATUS='N'";
pstmt = con.prepareStatement(query,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = pstmt.executeQuery();
while(rs.next())
{
String name = rs.getString("NAME");
String address = rs.getString("ADDRESS");
String class = rs.getString("CLASS");
String msg = //Other statements to check what status to be set
if(msg.equals("OK"))
rs.updateString("STATUS", "S");
else
rs.updateString("STATUS", "E");
rs.updateRow();
}
更新时出现错误:
java.sql.SQLException: Invalid operation for read only resultset: updateString
任何建议将不胜感激。
更新1:当select语句从单个表中选择数据时,相同的代码正在工作,因此在单个查询中从两个表中选择数据时是否存在任何问题?
[注意:正如@javaBeginner在评论中提到的,它仅适用于一张表。
对增强结果集的查询具有以下限制。不遵循这些准则将导致JDBC驱动程序选择备用结果集类型或并发类型。
产生可更新的结果集(根据规范):
另外,为了使插入可行,查询必须选择所有不可为空的列以及所有没有默认值的列。*查询不能使用“ SELECT *”。(但是请参阅下面的解决方法。)*查询必须仅选择表列。它不能选择派生的列或聚合,例如一组列的SUM或MAX。
产生对滚动敏感的结果集:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句