ADO.NET访问数据库如何避免并发访问带来的错误??是用程序本身保证吗?还是依靠数据库?还是其它什么方法来保证呢?

解决方案 »

  1.   

    http://topic.csdn.net/t/20041012/13/3447878.html或许对你有帮助!
      

  2.   

    数据库确实有专门的并发访问机制,但是在ADO.NET中访问数据是先读取数据,在断开数据库的条件下分析数据,
    最后再更新数据的,这中间有个断开连接的过程,否则,直接用事物作为SQL语句,再执行executenonequery()
    就能保证了,相当于是数据库操作了,但目前情况不同与这个
      

  3.   

    基本的数据操作,数据库和ADO.NET都提供了并发控制的,但一些复杂的并发情况就需要自己手动编码了,也就是数据库和ADO.NET都提供了相应的一些功能可以让你自己可以编码进行并发控制(如多表互锁之类的),个人理解
      

  4.   


    数据库如果不显式定义事务(没打开隐式事务前提下),就是不用begin transaction,
    每个语句将看成一个事物进行处理,这个情况下,并发控制机制用默认的隔离级别(好象是可重复读级别吧,忘了),实现并发控制,但这个是在数据库里面的操作,如果在ADO.NET中要先提取数据,断开连接分析数据,然后提交的话,就无法用事务了,其次,ADO.NET的dataset确实有并发访问机制,属于乐观并发控制(当操作不成功则回滚所有语句),这个没有返回什么提示或返回值,所以即使回滚了,你却不知道,那该怎么办,至于直接用C#代码附加功能来控制,(在操作数据前,可以先核对数据是否被改动),这样我是觉得可行,但是看了几个别人的程序,好象都没这个机制,是不是我想太多了??