2010-05-31 4 views

답변

13
new SqlConnection(connectionString) 

은 제공된 연결 문자열에 대해 SqlConnection 인스턴스를 새로 만듭니다.

SqlConnection cn = ... 

는 구성 접속 ​​대상물을 보유합니다 (using 문 범위) 새로운 로컬 변수 cn에 할당.

using(...) 

using 문 - 그것은 연결 예외

(Dispose() 수단은, 풀 등으로 해제/닫을이 경우에) 발생하더라도 끝에 Dispose() -d되는 것을 보장 전체 코드는 기본적으로입니다 :

{ // this { } scope is to limit the "cn" 
    SqlConnection cn = new SqlConnection(connectionString); 
    try { // the body of the using block 
     ... 
    } finally { // dispose if not null 
     if(cn != null) { cn.Dispose(); } 
    } 
} 
2

은도록 SqlConnection가 "사용"범위

4

가 더 이상 필요하지 않을 것 후에 그것은 SqlConnection을 처분 끝에 파괴 확인합니다. 이 경우 SqlConnection에 관리되지 않는 리소스가 남아있을 수 있으므로이를 정리해야합니다. SqlConnectionIDisposable을 구현합니다. 즉, 작업을 마친 후에 Dispose을 호출 할 수 있습니다.

그것은 기본적를위한 속기이다 :

try { 
    SqlConnection cn = new SqlConnection(connectionString); 

    // whatever other code 
} 
finally { 
    if (cn != null) 
    { 
     cn.Dispose(); 
    } 
} 

당신이 usingcn의 범위는 외부 try (finally에)도 확장 사용

.

자세한 내용은이 항목과 관련하여 MSDN's article을 확인하십시오.

+3

엄밀히 말하자면, cn의 범위는 "시도"의 바깥 쪽입니다. –

+0

고마워, 마크. 큰 이익을 위해 편집 됨. –

1

using 문은 IDisposable 인터페이스를 구현하는 개체에 적용 할 수 있습니다. 범위의 끝에서 Dispose가 개체에서 호출됩니다.

0

이렇게하면 제어가() {..} 절을 사용하여 종료 될 때 연결이 해제됩니다.

예외는 기능 복귀, 루프 중단, goto 또는 정상 범위 이탈로 인해 발생할 수 있습니다. 매우 편리합니다.

관련 문제