现在小弟遇到如下问题。现在我想逐行检查数据库记录。当某个记录值为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;
}
就是这句查询语句不会写。请各位前辈指教!如果能写出直接调用上一行的语句将更加感激不尽!
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;
}
就是这句查询语句不会写。请各位前辈指教!如果能写出直接调用上一行的语句将更加感激不尽!
n不为0时,将rs.next()传给rsTemp
n为0时,rsTemp不变
最后返回rsTemp
碰到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;
}
}
dyhdl = (SELECT TOP 1 dyhdl FROM nfdlb A WHERE A.ID < nfdlb.ID ORDER BY ID DESC) 不然的话就只有定义个变量每次去保存上一次SQL文检索出来的值,再更新
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;
}