【发布时间】:2013-09-19 05:35:24
【问题描述】:
以下是我的代码(重新构建),它根据条件选择和更新 STATUS 字段。 (使用 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 在 cmets 中提到的,它只适用于一个表。]
【问题讨论】:
-
试试这个:
rs.moveToInsertRow(); rs.updateString("STATUS", "S"); rs.insertRow();代替rs.updateString("STATUS", "S");我不确定...请检查并告诉我 -
@bhushan rs 是
instanceOf什么。那可能是只读的。 -
@RakeshJuyal 我已将 rs 声明为 `ResultSet rs=null'
-
@Bhushan 将您的查询更改为 select * from table_one 并让我知道它是否有效
-
@Bhushan 它只适用于一张桌子,请查看 jdbc api 2.2 第 5.6 节