:.net SqlCommand.ExecuteReader가 연결을 닫습니까? 이 문장에서
myCommand.ExecuteReader(CommandBehavior.CloseConnection)
예외의 경우에 밀접한 관계를합니까?
:.net SqlCommand.ExecuteReader가 연결을 닫습니까? 이 문장에서
myCommand.ExecuteReader(CommandBehavior.CloseConnection)
예외의 경우에 밀접한 관계를합니까?
명령이 잘못 될 수있는 방법이 많이 있습니다.
궁극적으로 이전에는 아무 잘못되지 않았다면 연결을 닫을 데이터 판독기의 Close 메서드입니다.
실제 DataReader 개체가 생성되기 전에 ExecuteReader 또는 해당 호출 메서드 중 하나에서 예외가 발생하면 no로 설정하면 연결이 닫히지 않습니다.
예외가 발생한 경우 연결을 닫을 수 없다고 저는 믿습니다.
예외가 발생하는 위치에 따라 다릅니다.
시도 잡기를 올바르게 구성하면 괜찮습니다. 예를 들어
: myCommand.ExecuteReader (위해 CommandBehavior.CloseConnection) 실패 (? 아마도 데이터베이스가 추락했습니다) 다음 연결 프로그램 닫을 수 없습니다 : 행이 경우
SqlCommand myCommand = new SqlCommand();
try
{
myCommand.dostuff();
}
catch(Exception ex)
{
// display error message
}
finally
{
myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
.
"정상적인"쿼리를 수행하는 가장 안전한 방법은
using (var conn = new SqlConnection("..."))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "...";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// ...
}
}
}
}
예외가이 코드를 외부에 걸린 될 수 있습니다.