.NET sqlcommand.executereader가 연결됩니까?
-
03-07-2019 - |
문제
이 문장에서 :
myCommand.ExecuteReader(CommandBehavior.CloseConnection)
예외의 경우 밀접하게 연결됩니까?
해결책
명령이 잘못 될 수있는 방법에는 여러 가지가 있습니다.
궁극적으로 데이터 리더의 밀접한 방법은 연결을 닫을 것이며, 이전에는 아무런 문제가 없었습니다.
Executereader 또는 해당 호출 된 메소드 내부에서 발생하는 예외가있는 경우 실제 DataReader 객체가 구성되기 전에 연결이 닫히지 않습니다.
예외의 경우 연결을 닫는 것을 신뢰하지 않습니다.
다른 팁
"정상적인"쿼리를하는 가장 안전한 방법은
using (var conn = new SqlConnection("..."))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "...";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// ...
}
}
}
}
예외는이 코드 외부에서 잡힐 수 있습니다.
예외가 어디에서 발생하는지에 따라 다릅니다!
시도를 올바르게 구조화하면 괜찮을 것입니다.
예를 들어:
SqlCommand myCommand = new SqlCommand();
try
{
myCommand.dostuff();
}
catch(Exception ex)
{
// display error message
}
finally
{
myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
라인 : mycommand.executereader (CommandBehavior.closeConnection)가 실패하면 (아마도 데이터베이스가 줄어들 었습니까?) 연결을 프로그래밍 방식으로 닫을 수 없습니다.
제휴하지 않습니다 StackOverflow