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时不会立即发生这种情况.但相反,池管理所有连接以保持与数据库的开放和结束通信之间的健康比率.
当然,除非您有其他情况需要保持连接打开,例如当您在交易中时.
首先,我建议有一个抽象,通过连接和线程池为您完成此操作.ADO.NET,实体框架,NHibernate等......
第二,永远......永远.....永远......将您的数据访问代码放入您的页面控制器.
更实际的是,
始终将close语句放入finally块中,这样无论抛出什么异常,都会始终调用它.