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并不重要<代码>连接
从使用的开始一直存在到结束。异常将首先导致使用块“结束”。