2011-02-28 6 views
0

Stack trace는 ExecuteReader가 ExecuteScalar의 기본 메소드임을 보여줍니다. 관련 commandbehaviour에 대해 파고 들었을 때, 나는 commandbehaviour.default가 독자에 의해 사용되었다는 것을 알리는 아래 게시물을 발견했습니다. 제공가 ExecuteReader (commandbehaviour.Closeconnection) 사용 -ExecuteScalar()를 사용하면 "기본"CommandBehaviour가있는 ExecuteReader()가 호출됩니까?

Does ExecuteScalar() have any advantages over ExecuteReader()?

나는 datareader.dispose가()) 연결이 항상 닫을 수 있습니다 명시 적으로 (datareader.close을 사용하여 배치 된 것을 알고 있어요. 반면 ExecuteReader (CommandBehaviour.Default)는 datareader 개체가 닫히거나 처리되는 경우에도 기본 연결을 열어 둡니다. 그래서 내 질문에, startscalar 기본 동작을 사용하는 경우 어떻게 스칼라 값을 검색 한 후에 기본 연결이 닫혀 있는지 확인하려면 무엇입니까?

답변

1

C# using 문은 언어에 포함 된 최상의 내용 중 하나입니다. 그것은 직접 귀하의 문제를 해결하지 않지만 SQLConnections (및 IDisposable 구현하는 다른 유형) 래핑하는 데 사용하는 표준 습관을 만들면 당신이 이런 종류의 많은 걱정하지 않아도됩니다 ...

using(SQLConnection connection = new SQLConnection(...)) 
{ 
} 
+0

감사합니다. Loren! 진술을 사용하는 것이 아마도 가장 빠르고 쉬운 방법 일 것입니다. – MZZ

+0

당신이 좋아한다면 다행입니다, using 문은 C#의 절대적인 보석이며, 더 자주 사용되어야합니다. – LorenVS