Visual Studio에서 데이터에 연결 개요
업데이트: 2007년 11월
Visual Studio에서는 데이터베이스, 웹 서비스, 개체 등과 같은 다양한 소스의 데이터에 응용 프로그램을 연결하는 도구를 제공합니다. Visual Studio의 데이터 디자인 도구를 사용할 때는 폼이나 구성 요소에 대한 연결 개체를 명시적으로 만들 필요가 없습니다. 일반적으로 연결 개체는 데이터 마법사 중 하나를 완료하거나 데이터 개체를 폼으로 끌어서 놓으면 만들어집니다. 응용 프로그램을 데이터베이스, 웹 서비스 또는 개체의 데이터에 연결하려면 데이터 소스 창에서 새 데이터 소스 추가를 선택하여 데이터 소스 구성 마법사를 실행하십시오.
다음 다이어그램에서는 TableAdapter 쿼리를 실행하여 데이터를 페치하고 Windows 응용 프로그램의 폼에 이를 표시하여 데이터에 연결할 경우의 표준 작업 흐름을 보여 줍니다.
상황에 따라 데이터 디자인 도구를 사용하지 않고 연결 개체를 만드는 것이 편리한 경우도 있습니다. 프로그래밍 방식으로 연결을 만드는 방법에 대한 자세한 내용은 데이터 소스에 연결(ADO.NET)을 참조하십시오.
참고: |
---|
웹 응용 프로그램을 데이터에 연결하는 방법에 대한 자세한 내용은 ASP.NET을 사용하여 데이터 액세스를 참조하십시오. |
연결 만들기
Visual Studio를 사용할 때는 연결 추가/수정 대화 상자(일반)를 사용하여 연결을 구성합니다. 연결 추가 대화 상자는 데이터 마법사 중 하나 또는 서버 탐색기/데이터베이스 탐색기에서 연결을 편집하거나 만들 때, 또는 속성 창에서 연결 속성을 편집할 때 나타납니다.
다음 작업 중 하나를 수행하면 데이터 연결이 자동으로 구성됩니다.
작업 |
설명 |
---|---|
데이터 소스 구성 마법사에서 데이터베이스 경로를 선택하면 연결이 구성됩니다. 자세한 내용은 방법: 데이터베이스의 데이터에 연결을 참조하십시오. |
|
TableAdapter 구성 마법사 내에서 연결이 만들어집니다. 자세한 내용은 방법: TableAdapter 만들기를 참조하십시오. |
|
TableAdapter 쿼리 구성 마법사 내에서 연결이 만들어집니다. 자세한 내용은 방법: TableAdapter 쿼리 만들기를 참조하십시오. |
|
항목을 데이터 소스 창에서 폼 또는 구성 요소 디자이너로 끌어서 놓기 |
항목을 데이터 소스 창에서 Windows Forms 디자이너 또는 구성 요소 디자이너로 끌어서 놓으면 연결 개체가 만들어집니다. 자세한 내용은 Windows 응용 프로그램에서 폼에 데이터 표시를 참조하십시오. |
서버 탐색기/데이터베이스 탐색기에 새 데이터 연결 추가 |
서버 탐색기/데이터베이스 탐색기의 데이터 연결은 데이터 마법사의 사용 가능한 연결 목록에 나타납니다. 자세한 내용은 방법: 서버 탐색기/데이터베이스 탐색기에서 새 데이터 연결 추가를 참조하십시오. |
연결 문자열
모든 연결 개체는 일반적으로 동일한 멤버를 노출합니다. 그러나 지정된 OleDbConnection 개체로 사용할 수 있는 특정 멤버는 연결된 데이터 소스에 따라 다릅니다. 일부 데이터 소스는 OleDbConnection 클래스의 특정 멤버를 지원하지 않습니다.
연결 개체와 관련된 기본 속성은 ConnectionString 속성입니다. 이 속성은 데이터베이스 서버에 로그온하고 특정 데이터베이스를 선택할 때 필요한 정보에 대한 특성/값 쌍을 갖는 문자열로 구성되어 있습니다. 일반적인 ConnectionString 속성의 예는 다음과 같습니다.
Provider=SQLOLEDB.1;Data Source=MySQLServer;Initial Catalog=NORTHWIND;Integrated Security=SSPI
이 연결 문자열에서는 Windows 통합 보안을 사용하여 연결하도록 지정합니다. 연결 문자열에 사용자 이름과 암호를 대신 포함할 수도 있지만 이 방법은 사용하지 않는 것이 좋습니다. 그럴 경우 이러한 특성이 응용 프로그램으로 컴파일되고 따라서 보안에 잠재적인 틈새가 생길 수 있기 때문입니다.
보안 정보: |
---|
연결 문자열의 세부 사항(예: 암호)을 저장하면 응용 프로그램 보안 문제가 발생할 수 있습니다. 데이터베이스 액세스를 제어할 때는 Windows 통합 보안을 사용하는 것이 더욱 안전한 방법입니다. 자세한 내용은 연결 정보 보호(ADO.NET)을 참조하십시오. |
또한 OLE DB에서 사용되는 가장 일반적인 특성/값 쌍은 DataSource 및 Database와 같은 개별 속성에 의해서 별도로 표시됩니다. 연결 개체를 사용할 때 ConnectionString 속성을 단일 문자열로 설정하거나 개별 연결 속성을 설정할 수 있습니다. 데이터 소스에서 개별 속성에 의해 표시되지 않는 연결 문자열 값이 필요한 경우 ConnectionString 속성을 설정해야 합니다.
연결 문자열 저장 및 검색
연결 문자열은 컴파일된 응용 프로그램 내부에 저장하거나 응용 프로그램 구성 파일에 저장할 수 있습니다. 자세한 내용은 방법: 연결 문자열 저장을 참조하십시오.
연결 열기 및 닫기
연결에 대한 두 가지 기본 메서드는 Open 메서드와 Close 메서드입니다. Open 메서드는 ConnectionString 속성의 정보를 사용하여 데이터 소스에 접속하고 열린 연결을 구성합니다. Close 메서드는 연결을 종료합니다. 대부분의 데이터 소스는 제한된 수의 열린 연결만 지원하며 열린 연결은 중요한 시스템 리소스를 차지하기 때문에 연결을 닫는 것은 필수적입니다.
TableAdapter, DataAdapter 또는 DataCommand를 사용하는 경우에는 명시적으로 연결을 열거나 닫을 필요가 없습니다. 이러한 개체의 메서드(예: 어댑터의 Fill 또는 Update 메서드)를 호출하면 해당 메서드는 연결이 열려 있는지 확인합니다. 열려 있지 않으면 어댑터에서 연결을 열고 논리를 수행한 후에 연결을 다시 닫습니다.
Fill과 같은 메서드는 연결이 열려 있지 않은 경우에만 자동으로 연결을 열고 닫습니다. 연결이 열려 있는 경우 메서드는 이 연결을 사용하지만 닫지는 않습니다. 이렇게 하면 사용자가 유연성 있게 직접 데이터 명령을 열고 닫을 수 있습니다. 여러 어댑터가 하나의 연결을 공유하는 경우에도 이 방식을 사용합니다. 이 경우 Fill 메서드를 호출할 때 각 어댑터에서 연결을 열고 닫는 것은 비효율적이므로 연결을 열고 각 어댑터의 Fill 메서드를 호출한 다음 작업을 완료한 후에 연결을 닫습니다.
연결 풀링
응용 프로그램에서 종종 여러 사용자가 같은 종류의 데이터베이스에 액세스하는 경우가 있습니다. 예를 들어, 여러 사용자가 같은 데이터를 가져오기 위해 같은 데이터베이스를 쿼리할 수 있습니다. 이러한 경우 응용 프로그램에서 데이터 소스에 대한 연결을 공유하거나 풀링하여 응용 프로그램의 성능을 향상시킬 수 있습니다. 여기서 각 사용자가 연결을 개별적으로 열고 닫으면 오버헤드가 발생하여 응용 프로그램 성능에 좋지 않은 영향을 줍니다.
OleDbConnection, OdbcConnection 또는 OracleConnection 클래스를 사용하면 공급자가 연결 풀링을 자동으로 처리하므로 사용자가 직접 관리하지 않아도 됩니다.
SqlConnection 클래스를 사용하면 연결 풀링이 암시적으로 관리되지만 풀링을 직접 관리할 수 있는 옵션도 있습니다. 자세한 내용은 SQL Server 연결 풀링(ADO.NET)을 참조하십시오.
트랜잭션
연결 개체는 트랜잭션 개체(예: SqlTransaction 개체)를 만드는 BeginTransaction 메서드를 사용하여 트랜잭션을 지원합니다. 반대로 트랜잭션 개체는 트랜잭션을 커밋시키거나 롤백시키는 메서드를 지원합니다.
트랜잭션은 코드에서 관리됩니다. 자세한 내용은 트랜잭션(ADO.NET)을 참조하십시오.
.NET Framework 버전 2.0에는 System.Transactions 네임스페이스를 통해 액세스할 수 있는 새 트랜잭션 프레임워크가 포함되어 있습니다. 이 프레임워크는 ADO.NET을 포함한 .NET Framework에 완전히 통합되는 방식으로 트랜잭션을 노출합니다. 자세한 내용은 SQL Server와 System.Transactions의 통합(ADO.NET)을 참조하십시오.
연결 정보 및 보안
연결을 열면 중요한 리소스(데이터베이스)에 액세스하게 되므로 연결을 구성하고 사용하는 중에 종종 보안 문제가 발생합니다.
응용 프로그램과 데이터 소스에 대한 액세스를 보안하는 방법은 시스템 아키텍처에 따라 다릅니다. 예를 들어, 웹 기반 응용 프로그램의 경우 사용자가 보통 익명으로 IIS(인터넷 정보 서비스)에 액세스하므로 보안 자격 증명은 제공되지 않습니다. 이 경우 응용 프로그램에서 특정 사용자 정보 대신 고유한 로그온 정보를 유지하고 이를 사용하여 연결을 연 다음 데이터베이스에 액세스합니다.
보안 정보: |
---|
연결 문자열의 세부 사항(예: 암호)을 저장하면 응용 프로그램 보안 문제가 발생할 수 있습니다. 데이터베이스 액세스를 제어할 때는 Windows 통합 보안을 사용하는 것이 더욱 안전한 방법입니다. 자세한 내용은 연결 정보 보호(ADO.NET)을 참조하십시오. |
인트라넷이나 다중 계층 응용 프로그램의 경우 Windows, IIS 및 SQL Server에서 제공되는 통합 보안 옵션을 사용할 수 있습니다. 이 모델에서는 데이터베이스 리소스에 액세스하기 위해 로컬 네트워크에 대한 사용자의 인증 자격 증명도 사용되며, 연결 문자열에는 명시적인 사용자 이름이나 암호를 사용하지 않습니다. 일반적으로 사용 권한은 데이터베이스 서버 컴퓨터에서 그룹으로 지정되기 때문에 데이터베이스에 액세스하는 모든 사용자에 대한 권한을 개별적으로 구성할 필요가 없습니다. 이 모델에서는 연결에 대한 로그온 정보를 저장할 필요가 없으며 연결 문자열 정보를 보호하기 위해 단계를 추가하지 않아도 됩니다.
보안에 대한 자세한 내용은 다음 페이지를 참조하십시오.
서버 탐색기/데이터베이스 탐색기에서 디자인 타임 연결
서버 탐색기/데이터베이스 탐색기에서는 디자인 타임에 데이터 소스에 대한 연결을 만들 수 있습니다. 이렇게 하면 사용 가능한 데이터 소스를 검색하고 테이블, 열 및 여기에 포함된 기타 요소에 대한 정보를 표시하며 데이터베이스 요소를 편집하고 만들 수 있습니다.
응용 프로그램에서는 서버 탐색기/데이터베이스 탐색기에서 사용할 수 있는 연결을 직접 사용하지 않습니다. Visual Studio에서 디자인 타임에 이 연결을 사용하여 데이터베이스 작업을 수행합니다. 자세한 내용은 Visual Database Tools를 참조하십시오.
예를 들어, 디자인 타임에 서버 탐색기/데이터베이스 탐색기를 사용하여 데이터베이스에 대한 연결을 만들 수 있습니다. 그런 다음 폼을 디자인할 때 데이터베이스를 검색하고 테이블에서 열을 선택한 후 이를 데이터 집합 디자이너에 끌어 놓을 수 있습니다. 이렇게 하면 데이터 집합에 TableAdapter가 만들어집니다. 또한 새로 만들어진 TableAdapter의 일부인 새 연결 개체도 만들어집니다.
디자인 타임 연결에 대한 정보는 특정 프로젝트나 솔루션에 관계없이 로컬 컴퓨터에 저장됩니다. 따라서 연결 지점을 사용할 수 있는 서버의 경우 응용 프로그램에서 작업할 때 디자인 타임 연결을 설정하면 Visual Studio에서 작업할 때마다 서버 탐색기/데이터베이스 탐색기에 이 연결이 나타납니다. 서버 탐색기/데이터베이스 탐색기 사용 및 디자인 타임 연결 작성에 대한 자세한 내용은 방법: 서버 탐색기/데이터베이스 탐색기에서 새 데이터 연결 추가를 참조하십시오.