我在Update触发器中要用一个DataReader循环读取Inserted表中的数据,每读出一条要根据某个字段更新相应的子表,可是问题是在DataReader里边时本身已经打开了一个SqlConnection所以提示我连接已经在使用中,我想再new一个Conn(SqlConnection Conn2 = new SqlConnection("Context Connection=true");)出来但是还是告诉我不行,我想应该是两个对象公用一个连接吧?对于这个问题怎么解决?不管是谁解决了这个问题有大礼送上

解决方案 »

  1.   

    感谢smartstar2005(),不过我用的是DataReader连接一定是打开着的 我是在
    while(Reader.reade())
    {
       //打开另一个连接处理当前行数据

    所以关闭当前连接时不可能的 如果换一种思路 比如将Inserted表加载到Datatable中,但是在更新大批量的时候比如更新200万条数据就会出问题 一次装载那么多内存溢出
      

  2.   

    Update触发器中要用一个DataReader循环读取Inserted表中的数据
    ========================================================
    比较奇怪,触发器中做循环是在SQL中的事情,和DataReader有什么关系?
      

  3.   

    to amandag(高歌)  我用的CLR触发器
      

  4.   

    对不起,我孤陋寡闻了。Reader是一直保持连接的,如果已经连上了你为什么还要重新打开一个连接呢?在创建Reader的时候你可以把那个连接保存下来,如SqlConnection sqlCnn = cmdReader.Connection;在更新的时候你可以这样:
    cmdUpdate.Connection  = sqlCnn;保持他们在一个连接里面应该是可以的。
      

  5.   

    参考http://www.cnblogs.com/jchdong/archive/2007/02/27/658339.aspx