using(dr=dbhelper.GetSql(sql)){
   while(dr.read())
   {
     //
   }
   dr.close();//在using里再加这个好不好或有什么后果
   dr.Dispose();//关闭后再dispose()会有什么后果.
   //另: 使用using性能好还是直接dr.close性能好
 }

解决方案 »

  1.   

     close() 只是关闭  但是此时 dr 里面还是有值  所以dispose()~~
      

  2.   

      using(dr=dbhelper.GetSql(sql)){
       while(dr.read())
       {
         //
       }
       dr.close();//在using里再加这个好不好或有什么后果
       dr.Dispose();//关闭后再dispose()会有什么后果.
       //另: 使用using性能好还是直接dr.close性能好
     }
    1.使用using后,当你使用完dr后会自动释放的不用dispose 或close
    2.如果你dispose 或close 放在该语句中 当你返回给其调用方法时 dr为 null 因为你把资源释放了
      

  3.   

    using(dr=dbhelper.GetSql(sql)){
       while(dr.read())
       {
         //
       }
       dr.close();//在using里再加这个好不好或有什么后果
       dr.Dispose();//关闭后再dispose()会有什么后果.
       //另: 使用using性能好还是直接dr.close性能好
     }
    close是dispose的子集,close是关闭还是可以再打开的,但是dispose以后这个资源就没有了更别说打开了
      

  4.   

    在using里需要使用Dispose()吗?
    using的目的不就是它会自动调用这个方法
    那样做实在是多此一举
      

  5.   

    using 语句的作用就是调用 Dispose,所以这个调用可以去掉这里的 Close 是 Dispose 的同义词, 所以也可以去掉了, dbconnection可以多次调用 close 而不会引发异常, dr 没试过