2008-10-21 3 views

답변

3

명령이 잘못 될 수있는 방법이 많이 있습니다.

궁극적으로 이전에는 아무 잘못되지 않았다면 연결을 닫을 데이터 판독기의 Close 메서드입니다.

실제 DataReader 개체가 생성되기 전에 ExecuteReader 또는 해당 호출 메서드 중 하나에서 예외가 발생하면 no로 설정하면 연결이 닫히지 않습니다.

예외가 발생한 경우 연결을 닫을 수 없다고 저는 믿습니다.

0

예외가 발생하는 위치에 따라 다릅니다.

시도 잡기를 올바르게 구성하면 괜찮습니다. 예를 들어

: myCommand.ExecuteReader (위해 CommandBehavior.CloseConnection) 실패 (? 아마도 데이터베이스가 추락했습니다) 다음 연결 프로그램 닫을 수 없습니다 : 행이 경우

SqlCommand myCommand = new SqlCommand(); 

try 
{ 
    myCommand.dostuff(); 
} 
catch(Exception ex) 
{ 
    // display error message 
} 
finally 
{ 
    myCommand.ExecuteReader(CommandBehavior.CloseConnection); 
} 

.

7

"정상적인"쿼리를 수행하는 가장 안전한 방법은

using (var conn = new SqlConnection("...")) 
{ 
    conn.Open(); 
    using (var cmd = conn.CreateCommand()) 
    { 
     cmd.CommandText = "..."; 
     using (var reader = cmd.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       // ... 
      } 
     } 
    } 
} 

예외가이 코드를 외부에 걸린 될 수 있습니다.

관련 문제