日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

setAutoCommit(false)导致读不到数据

發布時間:2023/12/6 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)导致读不到数据的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。