求助!用rs.next数据库更新当前行的问题。

kaixuan1983 2009-03-11 03:58:00
现在小弟遇到如下问题。现在我想逐行检查数据库记录。当某个记录值为0时,让当前值更新为上一行记录的非零值。如:数据库记录如下
1 2001 99
2 2002 70
3 2003 0
。。。
这个时侯逐行检查到第三行2003记录时第三个字段的值为0.这时需要让它更新为2002年的70。代码如下,使用access数据库。该怎么更新,才能更新当前行?
ResultSet rs = getUpdate.executeQuery("select dyhdl from nfdlb");
n1=0;
while(rs.next()){
n=rs.getFloat("dyhdl");
if(n==0){
getUpdate.executeUpdate("update nfdlb set dyhdl="+n1);
}
n1=n;
}
就是这句查询语句不会写。请各位前辈指教!如果能写出直接调用上一行的语句将更加感激不尽!
...全文
143 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinahack521 2009-03-14
  • 打赏
  • 举报
回复
ResultSet rs = getUpdate.executeQuery("select id,dyhdl from nfdlb");

getUpdate.executeUpdate("update nfdlb set dyhdl="+n1 +"where id ="+rs.getInt("id"));

需要在多查询一列来确定更新当前行。
goodmrning 2009-03-14
  • 打赏
  • 举报
回复
顶!
lzbang 2009-03-14
  • 打赏
  • 举报
回复
呵呵,我和5楼想到一块去了,方法是比较笨,但简单,安全
lzbang 2009-03-14
  • 打赏
  • 举报
回复
设置两个变量不行么,当前位置减1后的值赋给另外一个变量,然后进行修改操作,就像数据结构中的链表一样
kingssman 2009-03-12
  • 打赏
  • 举报
回复
比较笨的办法就是再设2各变量,分别保存不为0的dyhdl值,以及主键的值
碰到dyhdl为0的时候就可以用这两个变量去更新了

ResultSet rs = getUpdate.executeQuery("select dyhdl from nfdlb");
n1=0;
strPk="";
while(rs.next()){
strPk = rs.getString("pk");
n=rs.getFloat("dyhdl");
if(n==0){
getUpdate.executeUpdate("update nfdlb set dyhdl="+n1+ "where pk="+strPk);
} else {
n1 = n;
}
}
moonshowder 2009-03-12
  • 打赏
  • 举报
回复
ResultSet rs = getUpdate.executeQuery("select id,dyhdl from nfdlb");

getUpdate.executeUpdate("update nfdlb set dyhdl="+n1 +"where id ="+rs.getInt("id"));

需要在多查询一列来确定更新当前行。
品茶 2009-03-12
  • 打赏
  • 举报
回复
再定义一个结果集rsTemp
n不为0时,将rs.next()传给rsTemp
n为0时,rsTemp不变
最后返回rsTemp
hanjinchidm 2009-03-12
  • 打赏
  • 举报
回复
ding
elliotann 2009-03-12
  • 打赏
  • 举报
回复
ResultSet rs = getUpdate.executeQuery("select dyhdl from nfdlb");
n1=0;
while(rs.next()){
n=rs.getFloat("dyhdl");
if(n==0){
rs.previous();//将指标上移一行
getUpdate.executeUpdate("update nfdlb set dyhdl="+n1 +"where id="+(rs.getInt(1)+1));
}
n1=n;
}
drqdrqdr 2009-03-12
  • 打赏
  • 举报
回复
只要有KEY就可以写了

UPDATE nfdlb SET
dyhdl = (SELECT TOP 1 dyhdl FROM nfdlb A WHERE A.ID < nfdlb.ID ORDER BY ID DESC)

不然的话就只有定义个变量每次去保存上一次SQL文检索出来的值,再更新
tiantianzzz 2009-03-11
  • 打赏
  • 举报
回复
access数据库..没用过 不知道支持结果集回滚不..

支持的话可以用rs.previous()
zhangpeixv 2009-03-11
  • 打赏
  • 举报
回复
mark

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧