다음 예제에서 응용 프로그램은 환경 및 연결 핸들을 할당합니다. 그런 다음 사용자 ID JohnS 및 암호 참깨와 함께 SalesOrders 데이터 원본에 연결하고 데이터를 처리합니다. 데이터 처리가 완료되면 데이터 원본에서 연결이 끊어지고 핸들이 해제됩니다. 이 예제에서는 연결을 명시적으로 닫아야 하는 SqlDataReader와 함께 SqlConnection 개체를 사용하는 방법을 보여 주어 있습니다. 그러나 연결이 끊긴 데이터 모델을 사용하는 경우 연결을 직접 열고 닫을 필요가 없습니다. SqlDataAdapter 개체를 볼 때 이 문제가 향후 단원에서 어떻게 작동하는지 살펴보겠습니다. 다음 각 예제는 기존 공유 연결을 기반으로 새 명령문 핸들을 만듭니다. SqlConnection 개체의 인스턴스를 만드는 응용 프로그램은 선언적 또는 명령적 보안 요청을 설정하여 모든 직접 및 간접 호출자가 코드에 대한 충분한 권한을 갖도록 요구할 수 있습니다. SqlConnection은 SqlClientPermission 개체를 사용하여 보안 요청을 합니다. 사용자는 SqlClientPermissionAttribute 개체를 사용하여 코드에 충분한 사용 권한이 있는지 확인할 수 있습니다. 사용자와 관리자는 Caspol.exe(코드 액세스 보안 정책 도구)를 사용하여 컴퓨터, 사용자 및 엔터프라이즈 수준에서 보안 정책을 수정할 수도 있습니다. 자세한 내용은 .NET의 보안을 참조하십시오. 보안 요구를 사용하는 방법을 보여 주는 예제는 코드 액세스 보안 및 ADO.NET 참조하세요.

SQL_ATTR_LOGIN_VALUE값은 일치에 영향을 주지 않습니다. 응용 프로그램에서 SQLDisconnect를 호출하면 드라이버 관리자는 드라이버에서 SQLDisconnect를 호출합니다. 그러나 드라이버의 연결을 끊지 않습니다. 이렇게 하면 데이터 원본에 반복적으로 연결하고 연결을 끊는 응용 프로그램의 경우 드라이버가 메모리에 유지됩니다. 응용 프로그램이 SQL_HANDLE_DBC의 핸들 타입을 사용 하 여 SQLFreeHandle을 호출 하는 경우 드라이버 관리자는 SQL_HANDLE_DBC의 핸들 타입을 사용 하 여 SQLFreeHandle 다음 SQLFreeHandle 드라이버에서 SQL_HANDLE_ENV의 핸들 타입을 사용 하 여 다음 드라이버를 연결 합니다. ADO.NET 코드를 try/finally 블록으로 래핑했습니다. 15단: C# 자습서의 예외 처리 소개에 설명된 대로, 마지막으로 블록은 예외가 생성되는지 여부에 관계없이 특정 코드 조각이 실행되도록 보장합니다. 연결은 시스템 리소스가 부족하기 때문에 마지막으로 블록에서 연결이 닫혀 있는지 확인해야 합니다.