1.对数据库的连接SqlConnection con = new SqlConnection(constr);使用完成后,应该至少应该close或dispose关闭。否则会导致数据库例如(SQl2005)中处于sleeping的进程增加并且不能自己销毁,最终会导致出现"“连接超时,已经到达最大连接数等信息”。
其解决方法:见微软的官方说明“如果 SqlConnection 超出范围,则不会将其关闭。因此,除非将代码放在 using 语句内,否则必须调用 Close 或 Dispose 来显式关闭连接。它们在功能上是等效的。如果将连接池值 Pooling 设置为 true 或 yes,则也会释放物理连接。”
https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.close(v=vs.80).aspx
https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.close(v=vs.80).aspx
2.Close之前可以增加SqlConnection.ClearPool(con),用于清除每次的连接,防止已经进行的数据库连接进入sleeping而导致连接用户数User Connections 增加。