我正在编写一款ASP.NET应用程序。在我的数据层中,使用SQL连接在查询之前和之后打开和关闭连接。SqlConnection被保存为单个类的私有字段。该类中的每个数据库调用都使用相同的结构:
conn.Open();
try
{
// database querying here
}
finally
{
conn.Close();
}
然而,极少数情况下我会遇到异常信息“连接未关闭,连接当前状态为打开”。由于此问题很少从代码的不同部分发生,因此无法重现。我的应用程序涉及一些线程,但新线程也会创建新的数据层类和连接对象。
我不明白如何使用上述代码可能存在未关闭的连接。连接在打开后应该始终关闭,这样上述异常就不可能发生,对吗?
using(SQLConnection conn = new SQLConnection(xxx)) { ... }
语句中,看看是否仍然能够重现错误。这样,在代码退出时,SQL连接会被GC清除。 - Marco