C# 如果第二个Sql连接使用语句异常,该Sql连接能否保持打开状态

C# 如果第二个Sql连接使用语句异常,该Sql连接能否保持打开状态,c#,sqlconnection,C#,Sqlconnection,鉴于以下情况: try { using (var connection = new SqlConnection(_connectionString)) { connection.Open(); using (SqlCommand queryCommand = new SqlCommand(QueryString, connection)) { queryCommand.ExecuteScalar();

鉴于以下情况:

try
{
    using (var connection = new SqlConnection(_connectionString))
    {
        connection.Open();

        using (SqlCommand queryCommand = new SqlCommand(QueryString, connection))
        {
            queryCommand.ExecuteScalar();
        }
    }
}
catch (Exception ex)
{
 //logging occurs
}

如果
.ExecuteScalar()
方法引发异常,连接是否会保持打开状态?

否,因为您使用的是确保即使发生异常也会释放连接的。如果希望连接保持打开状态,则必须使用
Try/Catch

using (var connection = new SqlConnection(_connectionString))
{
    connection.Open();

    using (SqlCommand queryCommand = new SqlCommand(QueryString, connection))
    {
        try
        {
            queryCommand.ExecuteScalar();
        } catch (Exception ex)
        { 
            // log this exception or do something else useful 
        }
        // now do something else with the command/connection
    }
}

包括在“内部”using语句中发生异常的时间?我试图诊断旧系统的问题。@RLT:“内部”使用与
SqlConnection
无关,而仅与
SqlCommand
有关。因此,在使用
SqlCommand
之后,连接仍然是打开的,但是一旦它离开使用连接的“外部”范围,它就会被释放,这也会关闭它。抱歉,我已经更新了这个问题,以完全匹配代码中发生的事情,您的上述评论仍然适用吗?@RLT:周围的try/catch并不重要<代码>连接
从使用的
开始一直存在到结束。异常将首先导致使用块“结束”。