生活随笔
收集整理的這篇文章主要介紹了
setAutoCommit(false)导致读不到数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果把Connection的AutoCommit設為False,兩次executeQuery之間,通過其它途徑(我通過Navicat)修改了status值為1,第二次executeQuery依然把那條數據讀出來了,也就是說,我在Navicat中的操作就像沒有發生一樣,需要重新連接或者con.commit()一下才能讀到。猜測可能是事務的隔離級別造成的。
?con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
不允許臟讀,果然OK了,這種情況平時還是要注意一下的
Connection?con?=?DriverManager?????????.getConnection(?????????????????"jdbc:mysql://localhost/spider?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true",?????????????????"root",?"111111");?????????????con.setAutoCommit(false);???????????????????????????????Statement?stmt?=?null;?????????ResultSet?rs?=?null;?????????try?{?????????????stmt?=?con.createStatement();??????????????????????????rs?=?stmt.executeQuery("select?*?from?queue?where?status="?????????????????????+?String.valueOf(0));?????????????while?(rs.next())?{?????????????????String?url?=?rs.getString("url");?????????????????System.out.println(url);?????????????}???????????}?catch?(SQLException?e)?{?????????????e.printStackTrace();?????????}?finally?{?????????????if?(stmt?!=?null)?{?????????????????try?{?????????????????????stmt.close();?????????????????}?catch?(SQLException?e)?{?????????????????????e.printStackTrace();?????????????????}?????????????}?????????}??????????????????Thread.sleep(15000);?//等待的時候在navicat中修改數據的status=1?????????System.out.println("next");??????????????????try?{?????????????stmt?=?con.createStatement();?????????????rs?=?stmt.executeQuery("select?*?from?queue?where?status="?????????????????????+?String.valueOf(0));?????????????while?(rs.next())?{?????????????????String?url?=?rs.getString("url");?????????????????System.out.println(url);??????????????}??????????}?catch?(SQLException?e)?{?????????????e.printStackTrace();?????????}?finally?{?????????????if?(stmt?!=?null)?{?????????????????try?{?????????????????????stmt.close();?????????????????}?catch?(SQLException?e)?{?????????????????????e.printStackTrace();?????????????????}?????????????}?????????}??
本文轉自 dogegg250 51CTO博客,原文鏈接:http://blog.51cto.com/jianshusoft/765736,如需轉載請自行聯系原作者
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的setAutoCommit(false)导致读不到数据的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。