sqlserver中游标循环中只更新当前行的方法

来源:百度知道 编辑:UC知道 时间:2024/05/31 11:46:51
因为该表中没有主建,所以不能用主健确定唯一行。听说游标有这个功能,就是根据取出数据的原表,在fitch时,可以只对fitch的该行数据进行更新。那位达人帮帮忙。如果解决,100分追加!
PS:上面说的是在一个存储过程中的一个小环节,而且这个表也是个临时表

如果您只是想要针对查询到的资料进行一些简单的新增、更新或删除资料,您可以藉由ResultSet的一些方法来执行,而不一定要撰写SQL并执行。

想要使用ResultSet直接进行新增、更新或删除资料,在建立Statement时必须在createStatement()上指定 ResultSet.TYPE_SCROLL_SENSITIVE(或ResultSet.TYPE_SCROLL_INSENSITIVE,如果不想取得更新后的资料的话)与ResultSet.CONCUR_UPDATABLE,例如:

Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);

假如我们想要针对查询到的资料进行更新的动作,我们先移动游标至想要更新的资料位置,然后使用updateXXX()等对应的方法即可,最后记得使用 updateRow()让更新生效,例如:

ResultSet result = stmt.executeQuery(
"SELECT * FROM message WHERE name='caterpillar'");

result.last();
result.updateString("name", "justin");
result.updateString("email", "justin@mail.com");

result.updateRow();

使用updateXXX()等方法之后,并不会马上对资料库生效,而必须执行完updateRow()方法才会对资料库进行操作,如果在 updateRow()前想要取消之前的updateXXX()方法,则可以使用cancelRowUpdates()方法取