好心的人近来看看,谢谢了

xudaorong 2003-04-09 03:27:35
为什么我的程序 不能对表facilityhire的信息进行循环update呢,我用 System.out.println(fh_id);测试他输出有10个数,为什么当程序执行后他只对其中一个记录进行修改而已,为什么不全部修改,谢谢,程序在下面


Statement stmt = con.createStatement();
ResultSet rsHire = stmt.executeQuery("SELECT * FROM facilityhire");

while(rsHire.next())
{

if(rsHire.getString("fh_status").equalsIgnoreCase("WAITING"))

{
int fh_id=rsHire.getInt("fh_id");
System.out.println(fh_id);
String sql="UPDATE facilityhire SET fh_status='HIRING' WHERE fh_id="+fh_id;
stmt.executeUpdate(sql);

}


}
...全文
83 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
xudaorong 2003-04-09
  • 打赏
  • 举报
回复
哦,好的,谢谢
tingod 2003-04-09
  • 打赏
  • 举报
回复
msn吧,qq很少上
tingodl@hotmail.com
xudaorong 2003-04-09
  • 打赏
  • 举报
回复
tingod(┞┧○┟┦○) :给我qq,我要结帐了
xudaorong 2003-04-09
  • 打赏
  • 举报
回复
不会把,那我的为什么呢,算了,我把update移出循环外,用or来构造sql语句,现在能更新了,也不知道是那错误了,谢谢了,结帐,tingod(┞┧○┟┦○) ,交个朋友,以后有问题请教你,没问题把,我qq:24334225,你的呢
tingod 2003-04-09
  • 打赏
  • 举报
回复
是重复的,有3条记录的fid是重复的,值均为0
执行上面语句后,全部更新为7
输出三个id为1、2、3
xudaorong 2003-04-09
  • 打赏
  • 举报
回复
tingod(┞┧○┟┦○)
你的程序跟我的一样,但是你测试时你的fid一定是不能重复把,请让他几条记录的fid重复等于0,看看他能否全部update
tingod 2003-04-09
  • 打赏
  • 举报
回复
Statement s=c.stmt();
ResultSet rs = s.executeQuery("SELECT * FROM xmlnode");

while(rs.next())
{
if(rs.getInt("fid")==0)
{
int id=rs.getInt("id");
System.out.println(id);
String sql="UPDATE xmlnode SET fid=7 WHERE id="+id;
s.executeUpdate(sql);

}


}

类似的东西啊,运行结果完全正常的
xudaorong 2003-04-09
  • 打赏
  • 举报
回复
if(rsHire.getString("fh_status").equalsIgnoreCase("WAITING"))--对应---------SET fh_status='HIRING'
rsHire.getInt("fh_id");作为update条件
看看,发生逻辑错误吗 ,高手,认真看一下,真的不能更新符合条件的很多条记录,只更新一条
在while(rsHire.next())下,能不能对表本身进行更新呀!!!

tingod 2003-04-09
  • 打赏
  • 举报
回复
看看数据库吧,估计符合条件的操作已经完成了吧?
我用类似的结构测试了,一点问题都没有的。
xudaorong 2003-04-09
  • 打赏
  • 举报
回复
只有一次,郁闷,把他屏蔽掉stmt.executeUpdate(sql);以后看到的输出却有10个数,应该update10 才对呀
tingod 2003-04-09
  • 打赏
  • 举报
回复
返回一个
int n=stmt.executeUpdate(sql);
看看进行了多少次的操作,或许有帮助。
xudaorong 2003-04-09
  • 打赏
  • 举报
回复
不一样的,stmt.executeUpdate(sql);你把这条语句屏蔽掉看看,真的不一样 ,郁闷
finnal 2003-04-09
  • 打赏
  • 举报
回复
up
zez 2003-04-09
  • 打赏
  • 举报
回复
System.out.println(fh_id);
可以在 控制台上看到结果呀,
一样...
xudaorong 2003-04-09
  • 打赏
  • 举报
回复
其实程序没有错误, totodo(小土豆仙),if语句位置也不能移,因为我if 条件只是用来测试的,真正的条件没写出来,反正逻辑上没错误.对了,忘了一点,我把 stmt.executeUpdate(sql);
屏蔽掉,他输出的fh_id有10个数,但不屏蔽,他只输出其中的一个数,为什么,谢谢,希望大家能找出原因,强调一下,程序中只对一个表进行操作,谢谢
acefr 2003-04-09
  • 打赏
  • 举报
回复
jsp里面只是out.print()
tingod 2003-04-09
  • 打赏
  • 举报
回复
zxhong(红透半边天)
我想,
System.out.println(fh_id);
应该没有错吧。。
zxhong 2003-04-09
  • 打赏
  • 举报
回复
System.out.println(fh_id);
-->
out.println(fh_id);

其它没有错误
zez 2003-04-09
  • 打赏
  • 举报
回复
stmt.executeUpdate("UPDATE facilityhire SET fh_status='HIRING' WHERE fh_status='WAITING'");
直接用这句试试...
你程序里这句
String sql="UPDATE facilityhire SET fh_status='HIRING' WHERE fh_id="+fh_id;
对吗?
WHERE fh_id="+fh_id 是什么意思?
tingod 2003-04-09
  • 打赏
  • 举报
回复
测试完毕,未发生错误。

还有,既然你的操作是在同一个表内,可以直接用
UPDATE facilityhire SET fh_status='HIRING' WHERE fh_status='WAITING'
进行操作的
加载更多回复(1)

81,122

社区成员

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

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