我正在编写一个ASP.NET应用程序.在我的数据层中,在查询之前和之后正在打开和关闭sql连接.SqlConnection被保存为单个类的私有字段.类中的每个数据库调用都使用相同的结构:
conn.Open();
try
{
// database querying here
}
finally
{
conn.Close();
}
Run Code Online (Sandbox Code Playgroud)
然而,在非常罕见的情况下,我得到了例外情况'连接没有关闭.连接的当前状态是打开的.由于它很少来自代码的不同部分,因此无法重现该问题.我的应用程序中涉及一些线程,但新线程也会创建新的数据层类,从而创建新的连接对象.
我不明白如何使用上面的代码使连接保持打开状态.打开后是否应始终关闭连接,以免发生上述异常?
DGi*_*bbs 15
很可能是try您正在处理的块中抛出异常.有关try-finally的信息,请参阅MSDN中的此注释:
在处理的异常中,保证运行关联的finally块.但是,如果未处理异常,则finally块的执行取决于如何触发异常展开操作.
using无论如何,我建议将连接包装在一个块中:
using (SqlConnection connection = new SqlConnection(connectionString))
{
//etc...
}
Run Code Online (Sandbox Code Playgroud)
或者,在以下位置添加一个catch块try-finally:
conn.Open();
try
{
}
catch
{
}
finally
{
conn.Close();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39380 次 |
| 最近记录: |