[请教]ResultSet is not updateable(单表查询返回结果集可以更新,但多表查询返回结果集就不能更新)

04-09-25 smalldeer
下面只给出关键语句

sql = 'select t1.info as info,t1.flag as flag from t1,t2 where t1.key = t2.key and ...(other fliter)'

ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE);

rs_update = ps.executeQuery();

while (rs_update.next()) {

rs_update.updateString("flag","1");

rs_update.updateRow();

}

失败。

如果sql变成

sql = 'select t1.info as info,t1.flag as flag from t1 where ...(other fliter)'

就可以更新

----------------------------------------------------------------------------

查了资料,可更新的ResultSet

a、只引用了单个表。

b、不含有join或者group by子句。

c、那些列中要包含主关键字。

我目前的需求是:

数据源未知,从各个数据源取数据,取出来后放入一张表中,然后,回写更新标志位,原来未取出前是false,取出来后更新为true

只知道查询所需的sql,不知道更新语句

根据sql去查询出结果集,然后更新相应记录的标志位

如果是单表sql查询,这个能解决

但如果是多表关联查询,则ResultSet is not updateable

请教各位,怎么样处理好

谢谢大家。

猜你喜欢