我现在遇到这个情况 :
 
 两条查询的sql 语句.
假设是 select count(*) from user;
另一条是  select userName,userId from user;如果执行完第一条语句后: 别人从添加了一条新数据进去.
那我第二条语句取得的数据个数.不就和第一条语句不同了.???是这样吗?? 如何避免这样呢.现在毕业设计做分页信息的时候碰到这样的问题....
如果设置了 setAutoCommit(true)..setAutoCommit(false)
又会怎样???

解决方案 »

  1.   

    一次把数据缓存近来在处理先放list里
      

  2.   

    楼主说的这个情况的确是存在,无论你怎么缓存数据,都存在一个问题,那就是你的两条sql执行是有先后顺序的。
    说白了,即:我在你执行两条sql之间的时间范围内,添加了一条数据,就会出现count与实际记录数不一致的情况。不过我们可以减小这种在两条sql间插入数据的可能性(尽量缩短两条sql执行的间隔时间),其他方法我目前没有想到,等待高人。
    设置setAutoCommit(true)或setAutoCommit(false)
    对数据库进行查询操作没有一点点的影响,自动提交只是对update,insert操作有影响。
      

  3.   

    建议楼主看看数据库的acid原则
      

  4.   

    connection.setIsolationLevel(...),设置事务隔离级别就有办法强制阻塞其它人的修改,直接到你的任务完成之后别人才能修改这个表,不同的数据库使用的方法略有不同,有的是阻塞其它人,有的是忽略后面插入的数据。