private DataTable GetDataTable(string strSql)
{
DataTable dt = new DataTable();
try
{
SqlDataAdapter da = new SqlDataAdapter(strSql,this.conn);
                                     this.conn.Open();
da.Fill(dt);
da.Dispose();
}
catch
{
dt = null;
}
                           finnally
                           {
                                  this.conn.close();
                           }
return dt;
}

解决方案 »

  1.   

    如果可以的话,只采用一个Connction,对Connection 采用显式的open()和close()并且在不用的情况之下将Connection=null
      

  2.   

    请手动释放数据库资源,而不要等到垃圾处理器来回收。建议将数据库操作封装成DLL,在class的析构方法里关闭数据库连接,释放数据库资源。
      

  3.   

    同意brightheroes(闭关|重剑无锋 大巧不工) 
    应该及时关闭连接的,在连接池中自动保存的
      

  4.   

    <appSettings>
    <add key="strConnection" value="server=localhost; uid=sa; pwd=tcwl;database=zzq"></add>
    </appSettings>
    定义公共数据库连接对象
    dim cnn as new sqlconnection(configurationsettings("strConnection"))
    保证使用完全相同的数据库连接字符串,可以默认启用缓冲池,SqlDataAdapter可以不显式打开数据库,完成操作后会自动关闭。
    自己感觉你写打开数据库的函数没有必要。
      

  5.   

    记得
     this.conn.Dispose();
      

  6.   

    可以用垃圾处理器来回收(不this.conn.Dispose();是可以的),但是close关闭是必须的,最好在用完后立即关闭,交由连接池来管理
      

  7.   

    请问,conn.close()以后,.net是自动管理连接池的吗? 要自己写连接池吗? 另外,当我conn.Dispose();后. 用SQLDataReader不能返回记录了,是怎么回事情?
      

  8.   

    conn.Dispose()后conn对象已不在内存中存在了,当然QLDataReader也就不能返回记录了.
    一般连接用时OPEN它,用完后CLOSE它即可,不能DISPOSE.DISPOSE后要重新NEW的,不能OPEN了.
      

  9.   

    str_Conn="data  source=ntserver;initial  catalog=gc_web;persist  security  info=true;"+  
                                       "Enlist=true;Pooling=true;Max  Pool  Size=300;Min  Pool  Size=0;Connection  Lifetime=300;user  id=sa;packet  size=4096";  
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=60785
      

  10.   

    SQLDataReader 需要打开的连接,ado.net 之 sqlclient 是可以自行管理connection pool 的,只要你不显式关闭,自动管理的最小连接数好象五个,要解决速度问题,需要每一次的连接字符串一样,才不另外建立连接池,可以在连接字符串中起用选项
       brightheroes(闭关|重剑无锋 大巧不工)的方案是可行的 !
      

  11.   

    这段代码我觉得没有什么问题。你在Conn()里面虽然New对象了但是没有Open所以不会占用连接池,出现这种问题的原因是你运行在Debug下面,只要在项目属性里面的调试里面把Sql Debug修改成False就可以了。这个问题在微软的support里面已经有过说明!
      

  12.   


    连接代码为什么不放在web.config中呢?
      

  13.   

    catch  和finally区域里面要关闭连结,多关闭是没有坏处的