为了账号安全,请及时绑定邮箱和手机立即绑定

为什么总是关闭数据库连接?

为什么总是关闭数据库连接?

C#
汪汪一只猫 2019-11-28 14:18:57
如果连接到数据库消耗大量资源,那么如果必须再次打开数据库连接,为什么总是在应用程序中关闭数据库连接?我可以仅在整个应用程序中使此连接全局可用,以便其他类和方法重用它吗?例如(用伪代码):public class PopulateGridViews(){    public SqlConnection conn = new SqlConnection(@"Database:DATABASE");    conn.Open();    void PopulateGrid1()    {        SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE1");        cmd.Connection = conn;        cmd.ExecuteNonQuery();        cmd.Dispose();        // Populate Grid1    }    void PopulateGrid2()    {        SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE2");        cmd.Connection = conn;        cmd.ExecuteNonQuery();        cmd.Dispose();        // Populate Grid2    }}
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您不应该打开连接。


你应该:


尽可能晚地打开连接

尽快关闭连接

连接本身将返回到连接池。连接是有限且相对昂贵的资源。您建立的具有完全相同的连接字符串的任何新连接都将能够重用池中的连接。


强烈建议您在使用完连接后始终关闭该连接,以便将连接返回到池中。您可以使用Connection对象的Close或Dispose方法,或通过在C#中的using语句或Visual Basic中的using语句中打开所有连接来执行此操作。未显式关闭的连接可能不会添加或返回到池中。有关更多信息,请参见使用Statement(C#参考)或如何:处置Visual Basic的系统资源。 参考。


您应该适当包装IDisposable在using语句块中实现的所有内容:


 using (SqlConnection connection = new SqlConnection(connectionString))

 {

     connection.Open();


     ...


     command.ExecuteNonQuery();

 }


查看完整回答
反对 回复 2019-11-28
  • 3 回答
  • 0 关注
  • 737 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信