我的项目是 asp.net的,数据库底层使用Sql,但是在网站发布后使用using(.....){.....}或者connection.Close()这种方法关闭数据库连接往往关不掉,很容易网站就因连接池超限而瘫痪,这是为什么呢?有什么好的解决方法呢!?
解决方案 »
- 如何判断UpdatePanel是否在更新过程中?
- sql2008 存储过程传值问题
- 求一份详细的酒店管理系统的需求分析
- CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: 加载报表失败(在线等)
- 菜鸟问题,高手们帮帮忙。中国人民感谢您啊~~~~
- 怎样在程序中实现调用AJAX刷新
- DropDownList一个问题
- 这个简单的Sql如何实现
- [如何实现TextBox的TextChanging事件?]
- 为什么在我的机器上用WEB服务器控件,在浏览器中不能看见,好像浏览器当作注释语言给省略掉了啦?????????????
- 表的数据根据另外两张表的更新而更新
- 求这样的一个正则写法
{
using (SqlConnection connection = new SqlConnection(GetConnection.GetSqlConnection()))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
return Convert.ToInt32(cmd.ExecuteNonQuery());
}
connection.Close();
}
}我把代码贴一下 突然发现 这是不是因为在close()之前已经return了,所以关闭连接这就没走!
DbHelper数据操作类
{
using (SqlConnection connection = new SqlConnection(GetConnection.GetSqlConnection()))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
return Convert.ToInt32(cmd.ExecuteNonQuery());
}
connection.Close();
}
}我把代码贴一下 突然发现 这是不是因为在close()之前已经return了,所以关闭连接这就没走!
{
int reval=0
using (SqlConnection connection = new SqlConnection(GetConnection.GetSqlConnection()))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
reval=Convert.ToInt32(cmd.ExecuteNonQuery());
}
connection.Close();
return reval
}最后return
就算不写关闭,connection 一样会自动close。
uisng的作用就是自动关闭,包括出现异常也能关闭。
查看一下连接类的Dispose()方法的IL代码,它们都检查连接对象的当前状态,如果其状态为打开,就调用Close()方法。