保持连接字符串打开或不打开c#

Bee*_*eep 4 c# connection-string

如果我有几个类在同一页面上使用相同的连接字符串,我应该保持连接open();并在完成后关闭它或保持打开和关闭.

以下示例

protected void Page_Load(object sender, EventArgs e)
{
    cs.Open();
    something ...
    cs.Close();    
}

protected void Button1_Click(object sender, EventArgs e)
{

    cs.Open();
    something .....
    cs.Close();
}
Run Code Online (Sandbox Code Playgroud)

或这个

protected void Page_Load(object sender, EventArgs e)
{
    cs.Open();
    something ...
}

protected void Button1_Click(object sender, EventArgs e)
{
    something .....
    cs.Close();
    cs.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

tuc*_*caz 12

作为.NET的一般规则,所有非托管资源(如数据库连接)应尽可能晚地打开并尽早关闭,因此您显示的第一个选项是正确的方法.

.NET提供了一个连接池,确保您不会打开比所需更多的连接,因此当您调用Open或Close时不会立即发生这种情况.但相反,池管理所有连接以保持与数据库的开放和结束通信之间的健康比率.

当然,除非您有其他情况需要保持连接打开,例如当您在交易中时.


Jon*_*son 5

首先,我建议有一个抽象,通过连接和线程池为您完成此操作.ADO.NET,实体框架,NHibernate等......

第二,永远......永远.....永远......将您的数据访问代码放入您的页面控制器.

更实际的是,

始终将close语句放入finally块中,这样无论抛出什么异常,都会始终调用它.