可是我在SQLSERVER的管理工具中看到的连接好像并没有被释放呀,是怎么回事

解决方案 »

  1.   

    你的connection没有关闭啊
    connection.Close();
      

  2.   

    过程外怎么关闭connection?
    如果在过程内关闭了,return objReader;
    就不能返回值了
    我在程序中用了CommandBehavior.CloseConnection,大家不是都就这个是在datareader关闭的时候Connection会自动关闭吗?但是在过程外有没有什么用呢?
      

  3.   

    如果没有用的话,那怎么返回sqldatareader
      

  4.   

    用datareader有个缺点就是它的connection.open()跟.close()不好控制
    那你在每次执行前先要判断它是否打开如果打开就继续执行否则就要打开
    没执行完reader都要把connection关闭
      

  5.   

    要用到数据访问层来访问数据,由于获取数据和使用数据是在不同的类中,而且大多数情况还不在同一个assembly中,所以数据层返回的结果不可能是DataReader,因为DataReader是同一个打开的连接关联的,在使用找个DataReader时相应的连接必须是打开的,所以在分层结构中用DataReader返回数据是不合理的.做数据层时可以统一结果用datatable或dataset返回
      

  6.   

    你反正是要读取一批数据,就是读取数据的时候,你的数据库是连接的,一旦读完了,马上关闭,问题是你现在返回DataReader,这肯定不可行,因为它是需要数据库一直是连接的。所以你可以返回DataSet,.net 得 ado.net 的核心东西,你不要忘记用啊!!!
      

  7.   

    建议还是使用DataSet和DataTable,每当读取一批数据后就关闭可能解决你上述问题。
      

  8.   

    楼上几位说的好,如果不在同一个类里,就不要用DataReader了,使用datatable或dataset吧。
      

  9.   

    同意楼上的!我一般用datatable  dataset
    这样用完就关闭!
      

  10.   

    没关系的,这都是一些缓冲的connection,长期不用后数据库会自己释放的。
      

  11.   

    你的代码本身没有任何问题。一旦你关闭了reader以后conn也会被关闭。至于连接问题,呵呵它的销毁有.net本身负责完成,可能是它没有及时处理吧
      

  12.   

    http://blog.joycode.com/saucer/archive/2004/07/24/28365.aspx