利用JDBC连接数据库ResultSet查询到的数据与数据库里数据不一致
利用JDBC连接oracle数据库,ResultSet查询到的数据与数据库里数据不一致今天在写完利用JDBC操作Oracle数据库的相关函数后进行测试时遇到了个小问题,也算是有所收获,在此记录下。一开始测试通过JDBC操作数据库,对数据库进行插入、删除等操作,这边程序执行完成后,然后在数据库那一边查看数据,相关数据也已经更新,到这里都没有问题,很顺利。然后在测试查询指定用户的常用城市列表这一函数时
利用JDBC连接oracle数据库,ResultSet查询到的数据与数据库里数据不一致
今天在写完利用JDBC操作Oracle数据库的相关函数后进行测试时遇到了个小问题,也算是有所收获,在此记录下。
一开始测试通过JDBC操作数据库,对数据库进行插入、删除等操作,这边程序执行完成后,然后在数据库那一边查看数据,相关数据也已经更新,到这里都没有问题,很顺利。
然后在测试查询指定用户的常用城市列表这一函数时出现了问题,因为数据库里面数据比较少,所以我就在数据库一端执行了多次重复的插入操作,将指定用户的常用城市列表丰富下,然后我就在程序里进行相关函数调用,结果,相应的ResultSet rs里{图1}始终只有一条数据,尝试查询其它用户也是如此,有的用户甚至一条数据也没有{图2},明明数据库一端有很多数据。
一开始我怀疑是我是用了Set<>来存储ResultSet里的数据的原因,是不是重复的数据就被忽略了呢?然后我把将数据存储到set里的代码删除掉,这样就与set无关了,然后对rs里的数据个数(也就是行数)进行计算,结果并没有改变,set原因可以排除。
后来我又怀疑是不是jar包用错了,有个版本6的和版本14的,然后我都尝试了下,结果并没有改变。
后来因为返回的数据总是第一条,然后我就尝试着在数据库一端对第一条数据动手脚,改了城市名字,然后再执行程序,结果返回的城市名字还是之前没
改过的。到这里思路渐渐清晰,因为数据不同步,难不成链接到的库不是同一个?赶紧去查看下用户名和密码,确认是同一个,再说了之前测试其它函数数据是同步的啊。
忽然想到oracle数据库有提交这么一说,赶紧去数据库端看一看,提交后,问题解决!
之前测试其他函数用的都是通过JDBC添加的数据,所以到了最后测试查询指定用户常用城市列表时才碰见这个问题!
JDBC操作oracle数据库好像有自动提交这么一说,通过sql developer操作oracle需要手动提交!
因为用Set<>存储数据库里相关数据,得到的顺序与数据库里的不一样,后来换成了List{图1}。
更多推荐
所有评论(0)