使用语句连接未关闭异常

时间:2019-05-02 18:58:14

标签: c# exception database-connection using-statement visual-studio-2019

在using语句实例化连接之前,如何停止ASP.NET,C#类函数引发连接未关闭的异常?在Visual Studio 2019社区中进行调试时会发生这种情况。

1。在调试设置中取消选中“仅我的代码” 2.在嵌套的using语句中添加“ Finally {conn.Close()}” 3.从使用语句中删除try / catch 4.检查在函数抛出格式错误的语法或代码错误之前调用的所有方法和函数

    /// <summary>
    /// Gets all colleges currently in db
    /// </summary>
    /// <returns>College object list</returns>
public List<College> getAllColleges()
{
    List<College> allColleges = new List<College>();
    using (SqlConnection conn = new SqlConnection(DbHelper.ConnectionString))
    { 
        using (SqlCommand cmd = new SqlCommand("getAllColleges", conn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            conn.Open();
            try
            {
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    //once the college code is known, get college specific information
                    College c = new College();
                    c = getCollegeByColCode(dr["col"].ToString());
                    allColleges.Add(c);
                }

            }
            catch (Exception e)
            { throw e; }

        }

    }

    //order list by college name
    allColleges.OrderBy(o => o.colFullName).ToList();
    return allColleges;
}

在使用陈述之前,allColleges列表建立之后抛出错误

连接未关闭。连接的当前状态为打开。 说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.InvalidOperationException:未关闭连接。连接的当前状态为打开。

源错误:

第115行:{ 第116行:
第117行:列出大学=新的List(); 第118行:使用(SqlConnection conn =新的SqlConnection(DbHelper.ConnectionString)) 第119行:{

源文件:C:_dev \ SNQProject \ SNQLibrary \ SNQLibrary \ Classes \ College.cs行:117

堆栈跟踪:

[InvalidOperationException:未关闭连接。连接的当前状态为打开。    C:_dev \ SNQProject \ SNQLibrary \ SNQLibrary \ Classes \ College.cs:117中的SNQLibrary.Classes.College.getAllColleges()    c:_dev \ SNQ \ Admin \ SNQAdmin.master.cs:191中的Admin_SNQAdmin.buildCollegeSelect(String colCode)    c:_dev \ SNQ \ Admin \ Default.aspx.cs:135中的Admin_Default.finalizeLogIn()    Admin_Default.btnLogin_Click(Object sender,EventArgs e)在c:_dev \ SNQ \ Admin \ Default.aspx.cs:98中    System.Web.UI.WebControls.Button.OnClick(EventArgs e)+11758848    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+150    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+5028

1 个答案:

答案 0 :(得分:0)

此错误可能告诉您其他位置的连接尚未关闭。

执行完成后,请尝试不要打开新连接或关闭所有连接。