초기화하거나 값을 지정하지 않고 MySqlDataReader를 선언하고 싶습니다. 아래 코드와 같습니다.초기화하지 않고 MySqlDataReader를 선언하십시오.
MySqlDataReader rdr;
try
{ /* stuff to open the MySqlDataReader and use it, not important for my question */ }
catch (Exception e)
{ /* error handling stuff, not important for my question */ }
finally
{
/* code to close the reader when things have gone wrong */
try
{
if (rdr != null)
{
if (rdr.IsClosed == false)
{
rdr.Close();
}
}
}
catch (Exception e)
{ /* error handling stuff, not important for my question */ }
}
그 이유는 내가 내가 런타임 오류가 발생 할 사실 않을 경우 시도의 마지막 섹션에 MySqlDataReader을 닫아야 할 것입니다. 따라서 MySqlDataReader는 try보다 먼저 선언해야합니다. 그렇지 않으면 finally 코드의 범위를 벗어납니다. 나는 그래서 예를
MySqlDataReader rdr = New MySqlDataReader();
위해 뭔가로 설정하려는 컴파일 시간 오류 " 'RDR'할당되지 않은 지역 변수의 사용을"얻을 위의 코드를 컴파일하지만 때
그러나이 나에게 컴파일을 제공 시간 오류 " 'MySql.Data.MySqlClient.MySqlDataReader'형식에 생성자가 정의되지 않았습니다." 그리고 명령 객체의 결과를 할당하면 코드가 잘못 컴파일 될 수 있으며 내 시도가 잡으려고합니다.
MySqlDataReader 개체가 첫 번째 반복에서 닫히지 않으면이 함수를 두 번째로 호출하면 두 번째로 충돌이 발생합니다.
그렇다면 잘못되었을 때 MySqlDataReader 개체를 정리하려면 어떻게해야합니까? 당신은 이미 잘 그래서 그것이, 샘플 코드에서 finally
블록 내에서 널 (null)의 여부를 확인하고, 결국
MySqlDataReader rdr = null;
: