为何 java中sql查询的结果集不能改变?

xianglgd 2012-05-29 10:48:09
想 请问一下 ,
我用 java 连接数据库后,进行了两次查询 ,可是 结果都一样(估计是结果集没变),
result=start.executeQuery("select place from onplace where number ='123456'");
place = result.getString("place");
System.out.println(place);
result=start.executeQuery("select place from onplace where number ='1256'");
place = result.getString("place");
System.out.println(place);

为何两次都输出的是同一个结果?
储存数据的时候,明明第二个number ='1256'没有值的,可是也输出的是 上面的一个结果,这是为什么?
我在中间加了 result.close();依然不行!!!

我换了一下 先查 number ='1256', 结果是对的 输出的 是
null 12;
但是 我要是先查 number=‘123456’,结果却是 12 12;
这是为什么???? 高手帮忙呀!!!
...全文
257 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
柳波 2012-06-01
  • 打赏
  • 举报
回复
重新定义一个Result。
欢迎浏览我的博客。
http://blog.csdn.net/lb85858585
YouLoveApple 2012-05-31
  • 打赏
  • 举报
回复
我在oracle10g上用楼主设置条件测试不会发生楼主说的情况。不知是不是和你使用数据驱动有关,换一种数据库试试。
xianglgd 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
rs应该先next再去查询吧,没看到过直接用的呀
[/Quote]

我知道 ,我这是简写、、、
if(result.next()){
place = result.getString("place");
}
System.out.println(place);
这是原样!!!
就是结果集不变!!!!
lxy15329 2012-05-31
  • 打赏
  • 举报
回复
rs应该先next再去查询吧,没看到过直接用的呀
sdojqy1122 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
我加 result =null ,Statement 与 conn 也都设置为null了;
可是都不成功!!!
还有 3楼的做法有点不好,
如果 我是要一个循环里面多次查找呢? 难道每次都要新用一个 Statement ???
有没有其他的方法呀?
[/Quote]
一般没你这么找的,直接分开来。你要把逻辑分开,解耦。
public User findById(int id){
//code
}



淡定的峰哥 2012-05-30
  • 打赏
  • 举报
回复
再有可能就是在客户端上操作数据,没有commit
xianglgd 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
ResultSet的不用关闭的,你每次只需关闭Statement就行了。
[/Quote]

我都关闭了 ,都设置为NULL 了, 再重新连接,重新搞,依然不行,结果集就是不变!!!
xianglgd 2012-05-30
  • 打赏
  • 举报
回复
我加 result =null ,Statement 与 conn 也都设置为null了;
可是都不成功!!!

还有 3楼的做法有点不好,
如果 我是要一个循环里面多次查找呢? 难道每次都要新用一个 Statement ???
有没有其他的方法呀?
浅_时光 2012-05-30
  • 打赏
  • 举报
回复
ResultSet的不用关闭的,你每次只需关闭Statement就行了。
xianglgd 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
两条记录的place恰好相同
[/Quote]

请仔细看一下我的题目,
不同 123456的 place是 12
另外一个 没有记录,应该是null的,但是也输出 12;
Sai 2012-05-30
  • 打赏
  • 举报
回复
不好意思,没看清题目。。。
Sai 2012-05-30
  • 打赏
  • 举报
回复
ResultSet中值没有清空
lliiqiang 2012-05-30
  • 打赏
  • 举报
回复
两条记录的place恰好相同
xianglgd 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
一般没你这么找的,直接分开来。你要把逻辑分开,解耦。
public User findById(int id……
[/Quote]

请问,public User findById 是什么意思?
不懂
sdojqy1122 2012-05-29
  • 打赏
  • 举报
回复
....
result=start.executeQuery("select place from onplace where number ='123456'");
while(result.next()){
place = result.getString("place");
System.out.println(place);
}

其次主要可能是这个statement的问题,ResultSet你不用管,因为他是指向了一个新的Set;
你换一个statement应该就没问题了。所以你的ResultSet不用关。
Statement otherStmt = conn.createStatement();
result=otherStmt.executeQuery("select place from onplace where number ='1256'");
while(result.next()){
place = result.getString("place");
System.out.println(place);
}

sun0322 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我在中间加了 result.close();依然不行!!!
[/Quote]
在中间加result=null;试试。。。
sun0322 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
想 请问一下 ,
我用 java 连接数据库后,进行了两次查询 ,可是 结果都一样(估计是结果集没变),
result=start.executeQuery("select place from onplace where number ='123456'");
place = result.getString("place");
System.out.println(place);
……
[/Quote]
在中间加result=null;试试。。。

62,621

社区成员

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

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