분류 전체보기 (328)
.NET (111)
S/W tip (35)
etc (63)
DB (34)
HOT item~! (48)
Disign pettens (4)
UX (6)
나의 S/W (2)
개발관련 이슈 (16)
Diary (1)
웹플러스 (1)
calendar
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
tags
archive
link
ColorSwitch 00 01 02
▣  Unity Application Block - .NET/C# - 2011. 6. 14. 20:35

출처 : http://aspdotnet.springnote.com/pages/1853294

Data Access Application Block 개요

Chris Brooks, Graeme Malcolm, Alex Mackman, Edward Jezierski
Microsoft Corporation

요약: Data Access Application Block은 저장 프로시저를 호출하고 SQL Server 데이터베이스에 대한 SQL 텍스트 명령을 발급하는 것을 도와주는 최적화된 데이터 액세스 코드가 포함된 .NET 구성 요소입니다. Data Access Application BlockSqlDataReader, DataSetXmlReader 개체를 반환합니다. 사용자의 .NET 응용 프로그램에서 Data Access Application Block을 빌딩 블록으로 사용하면 사용자 지정 코드를 만들고 테스트하고 유지 관리하는 양을 줄일 수 있습니다. 다운로드에는 전체 C#Visual Basic .NET 소스 코드와 다양한 내용의 설명서가 제공됩니다(15페이지/인쇄 페이지 기준).

소개

.NET 응용 프로그램용 데이터 액세스 코드의 디자인 및 개발에 참여하고 있습니까? 동일한 데이터 액세스 코드를 반복해서 쓰고 있다고 느낀 적이 있습니까? 한 줄에서 저장 프로시저를 호출할 수 있도록 도우미 함수로 데이터 액세스 코드를 래핑한 적이 있습니까? 만약 있다면, Microsoft Data Access Application Block for .NET을 사용하십시오.

Data Access Application BlockMicrosoft SQL Server 데이터베이스 액세스를 위해 성능 및 리소스 관리에 유용한 정보를 캡슐화합니다. 사용자의 .NET 응용 프로그램에서 쉽게 빌딩 블록으로 사용할 수 있습니다. Data Access Application Block을 사용하면 사용자 지정 코드를 만들고 테스트하고 유지 관리하는 양이 줄어듭니다.

특히, Data Access Application Block을 사용하면 다음을 실행하는 데 도움이 됩니다.

  • 저장 프로시저 또는 SQL 텍스트 명령 호출
  • 매개 변수 정보 지정
  • SqlDataReader, DataSet 또는 XmlReader 개체 반환

예를 들어, Data Access Application Block을 참조하는 응용 프로그램에서 저장 프로시저를 호출하고 DataSet을 다음과 같이 한 줄의 코드로 생성할 수 있습니다.

          [Visual Basic]
          
          Dim ds As DataSet = SqlHelper.ExecuteDataset( _
          
                connectionString, _
          
                CommandType.StoredProcedure, _
          
                "getProductsByCategory", _
          
                new SqlParameter("@CategoryID", categoryID))
          
           
          
          [C#]
          
          DataSet ds = SqlHelper.ExecuteDataset( 
          
                connectionString,
          
                CommandType.StoredProcedure,
          
                "getProductsByCategory",
          
                new SqlParameter("@CategoryID", categoryID)); 
          
            
          
            
          

참고 Application Block for .NET 디자인은 성공적인 .NET 응용 프로그램을 검토하여 이루어졌으며, 응용 프로그램을 현재 상태로 또는 사용자에 맞게 사용할 수 있는 소스 코드로 제공됩니다. 이것이 다양한 사용 사례에서 데이터 액세스 동작을 자세히 제어하기 위해 빌드되는 Microsoft ADO.NET 라이브러리가 앞으로 취해야 할 경향은 아닙니다. ADO.NET의 이후 버전에서는 이 시나리오가 다른 모델로 설명될 수 있습니다.

이 개요의 나머지 부분은 다음 절들로 분류됩니다.

Data Access Application Block 포함되는 기능은 무엇입니까?

Data Access Application Block 다운로드 설치

Data Access Application Block 사용

내부 디자인

질문과 대답(FAQ)

사용자 의견 지원

공동 작업자

Data Access Application Block에 포함되는 기능은 무엇입니까?

기능을 테스트하는 데 사용할 수 있는 Data Access Application Block의 소스 코드가 Quick Start 샘플 응용 프로그램과 함께 제공됩니다. Data Access Application Block에는 제공되는 코드에 대한 학습과 작업을 도와주는 다양한 내용의 설명서가 포함되어 있습니다.

Visual Studio .NET 프로젝트

Data Access Application Block에는 일반 시나리오를 테스트하는 데 사용할 수 있는 각 언어로 된 Quick Start Samples 클라이언트 응용 프로그램 및 Microsoft Visual Basic .NETMicrosoft Visual C# 소스 코드가 제공됩니다. 이 소스 코드는 Data Access Application Block의 작동 방법을 이해하는 데 도움이 됩니다. 또한, 개별 요구 사항에 따라 소스 코드를 사용자에 맞게 설정할 수 있습니다.

Visual BasicC# Microsoft.ApplicationBlocks.Data 프로젝트를 각각 컴파일하여 Microsoft.ApplicationBlocks.Data.dll이라는 어셈블리를 생성할 수 있습니다. 이 어셈블리에는 데이터베이스 명령 실행을 위한 핵심 기능이 있는 SqlHelper 클래스와 매개 변수 검색 및 캐싱 기능을 제공하는 SqlhelperParameterCache라는 두 번째 클래스가 포함되어 있습니다.

설명서

Data Access Application Block의 설명서는 다음과 같은 절로 구성되어 있습니다.

  • Data Access Application Block을 사용하여 응용 프로그램 개발. 이 절에서는 Data Access Application Block을 빠르고 쉽게 사용할 수 있도록 도와주는 다양한 일반 사용 사례를 다루며 빠른 시작 예제가 나와 있습니다.
  • Data Access Application Block의 디자인 및 구현. 이 절에서는 Data Access Application Block의 디자인과 구현에 대한 통찰력을 제공하는 배경 디자인에 대한 정보를 다룹니다.
  • 배포 및 작업. 이 절에서는 보안 관련 정보와 배포 및 업데이트 옵션을 포함하는 설치 정보를 다룹니다.
  • 참조. 이 절은 Data Access Application Block을 구성하는 클래스와 인터페이스를 자세히 설명하는 광범위한 API 참조 절입니다.

시스템 요구 사항

Data Access Application Block을 실행하려면 다음이 필요합니다.

Data Access Application Block 다운로드 및 설치

서명된 Data Access Application Block 어셈블리 및 다양한 내용의 설명서가 들어 있는 Windows Installer 파일을 사용할 수 있습니다.

설치 프로세스에서는 프로그램 메뉴에 Microsoft Application Blocks for .NET 하위 메뉴를 만듭니다. Microsoft Application Blocks for .NET 하위 메뉴에는 설명서와 Data Access Application Block Visual Studio .NET 솔루션을 시작하는 옵션이 포함되어 있는 데이터 액세스 하위 메뉴가 있습니다.

MSDN Downloads 로 이동하여 다운로드를 엽니다.

Data Access Application Block 사용

이 절에서는 Data Access Application Block을 사용하여 데이터베이스 명령을 실행하고 매개 변수를 관리하는 방법을 설명합니다. 그림 1에서는 Data Access Application Block의 주요 요소를 보여줍니다.

그림 1. Data Access Application Block

SqlHelper 클래스는 SQL Server 데이터베이스에 대해 서로 다른 유형의 다양한 명령을 실행할 수 있는 정적 메서드 집합을 제공합니다.

SqlHelperParameterCache 클래스는 성능을 향상시키는 데 사용되는 명령 매개 변수 캐싱 기능을 제공합니다. 이 클래스는 많은 Execute 메서드(특히, 저장 프로시저만 실행하도록 디자인되는 재정의)에서 내부적으로 사용됩니다. 또한, 데이터 액세스 클라이언트에서 특정 명령에 대해 특정 매개 변수 집합을 캐싱할 때 직접 사용할 수 있습니다.

SqlHelper 클래스를 사용하여 명령 실행

SqlHelper 클래스는 ExecuteNonQuery, ExecuteDataset, ExecuteReader, ExecuteScalar, ExecuteXmlReader의 다섯 가지 공유(Visual Basic) 또는 정적(C#) 메서드를 제공합니다. 구현되는 각 메서드는 일관성 있는 오버로드 집합을 제공합니다. 또한 개발자가 데이터에 액세스하는 데 필요한 수준의 융통성을 제공하는 반면 SqlHelper 클래스를 사용하여 명령을 실행하기 위해 잘 정의된 패턴을 제공합니다. 각 메서드에 제공되는 오버로드는 서로 다른 메서드 인수를 지원하므로, 개발자는 연결, 트랜잭션 및 매개 변수 정보를 전달하는 방법을 결정할 수 있습니다. 이 클래스에서 구현되는 모든 메서드는 다음 오버로드를 지원합니다.

          [Visual Basic]
          
          Execute* (ByVal connection As SqlConnection, _
          
                    ByVal commandType As CommandType, _
          
                    ByVal CommandText As String)
          
           
          
          Execute* (ByVal connection As SqlConnection, _
          
                    ByVal commandType As CommandType, _
          
                    ByVal commandText As String, _
          
                    ByVal ParamArray commandParameters() As SqlParameter)
          
           
          
          Execute* (ByVal connection As SqlConnection, _
          
                    ByVal spName As String, _
          
                    ByVal ParamArray parameterValues() As Object)
          
           
          
          Execute* (ByVal transaction As SqlTransaction, _
          
                    ByVal commandType As CommandType, _
          
                    ByVal commandText As String)
          
           
          
          Execute* (ByVal transaction As SqlTransaction, _
          
                    ByVal commandType As CommandType, _
          
                    ByVal commandText As String, _
          
                    ByVal ParamArray commandParameters() As SqlParameter)
          
           
          
          Execute* (ByVal transaction As SqlTransaction, _
          
                    ByVal spName As String, _
          
                    ByVal ParamArray parameterValues() As Object)
          
           
          
          [C#]
          
          Execute* (SqlConnection connection, CommandType commandType, 
          
                    string commandText)
          
           
          
          Execute* (SqlConnection connection, CommandType commandType,
          
                    string commandText, params SqlParameter[] commandParameters)
          
           
          
          Execute* (SqlConnection connection, string spName, 
          
                    params object[] parameterValues)
          
           
          
          Execute* (SqlConnection connection, 
          
                    CommandType commandType, string commandText)
          
           
          
          Execute* (SqlConnection connection,
          
                    CommandType commandType, string commandText, 
          
                    params SqlParameter[] commandParameters)
          
           
          
          Execute* (SqlConnection connection,
          
                    string spName, params object[] parameterValues)
          

ExecuteXmlReader를 제외한 모든 메서드는 이들 오버로드 외에 다음 메서드 서명에 표시된 것처럼 연결 정보를 연결 개체가 아닌 연결 문자열로 전달할 수 있는 오버로드를 제공합니다.

          [Visual Basic]
          
          Execute* (ByVal connectionString As String, _
          
                    ByVal commandType As CommandType, _
          
                    ByVal commandText As String)
          
           
          
          Execute* (ByVal connectionString As String, _
          
                    ByVal commandType As CommandType, _
          
                    ByVal commandText As String, _
          
                    ByVal ParamArray commandParameters() As SqlParameter)
          
           
          
          Execute* (ByVal connectionString As String, _
          
                    ByVal spName As String, _
          
                    ByVal ParamArray parameterValues() As Object)
          
           
          
          [C#]
          
          Execute* (string connectionString, CommandType commandType, 
          
                    string commandText)
          
           
          
          Execute* (string connectionString, CommandType commandType, 
          
                    string commandText, 
          
                    params SqlParameter[] commandParameters)
          
           
          
          Execute* (string connectionString, string spName, 
          
                    params object[] parameterValues)
          

참고 SqlDataReader 개체와 달리 XmlReader 개체는 XmlReader가 닫힐 때 연결을 자동으로 닫을 수 없기 때문에 ExecuteXmlReader는 연결 문자열을 지원하지 않습니다. 연결 문자열을 전달한 클라이언트에서는 작업을 마칠 때 XmlReader와 관련된 연결 개체를 닫을 수 없습니다.

Data Access Application Block 어셈블리를 참조하고 다음 코드 샘플에 설명된 것처럼 Microsoft.ApplicationBlocks.Data 네임스페이스를 가져와서 SqlHelper 클래스 메서드를 사용하는 코드를 작성할 수 있습니다.

          [Visual Basic]
          
          Imports Microsoft.ApplicationBlocks.Data
          
           
          
          [C#]
          
          using Microsoft.ApplicationBlocks.Data;
          
            
          

네임스페이스를 가져온 다음 아래 코드 샘플에 설명된 것처럼 Execute* 메서드를 호출할 수 있습니다.

          [Visual Basic]
          
          Dim ds As DataSet = SqlHelper.ExecuteDataset( _
          
             "SERVER=(local);DATABASE=Northwind;INTEGRATED SECURITY=True;",
          
               _
          
             CommandType.Text, "SELECT * FROM Products")
          
           
          
          [C#]
          
          DataSet ds = SqlHelper.ExecuteDataset( 
          
             "SERVER=DataServer;DATABASE=Northwind;INTEGRATED
          
               SECURITY=sspi;", _
          
             CommandType.Text, "SELECT * FROM Products");
          

SqlHelperParameterCache 클래스를 사용하여 매개 변수 관리

SqlHelperParameterCache 클래스는 매개 변수를 관리하는 데 사용할 수 있는 세 가지 공개 공유 메서드를 제공합니다. 공개 공유 메서드는 다음과 같습니다.

  • CacheParameterSet. 캐시에서 SqlParameters 배열을 저장하는 데 사용됩니다.
  • GetCachedParameterSet. 캐싱된 매개 변수 배열의 복사본을 검색하는 데 사용됩니다.
  • GetSpParameterSet. 데이터베이스에 쿼리한 다음 나중에 쿼리할 때 결과를 캐싱하여 지정된 저장 프로시저에 대한 해당 매개 변수를 검색하는 데 사용되는 오버로드된 메서드입니다.

매개 변수 캐싱 및 검색

SqlParameter 개체 배열은 CacheParameterSet 메서드를 사용하여 캐싱될 수 있습니다. 이 메서드는 연결 문자열과 명령 텍스트를 연결하여 키를 만든 다음 Hashtable에 매개 변수 배열을 저장합니다.

캐시에서 매개 변수를 검색하려면 GetCachedParameterSet 메서드를 사용합니다. 이 메서드는 캐시에서 이름,, 방향, 데이터 형식 등으로 초기화되고 메서드에 전달되는 연결 문자열과 명령 텍스트에 일치하는 캐시 매개 변수의 SqlParameter 개체 배열을 반환합니다.

참고 매개 변수 집합의 키로 사용되는 연결 문자열은 간단한 문자열 비교를 사용하여 일치됩니다. GetCachedParameterSet에서 매개 변수를 검색하는 데 사용되는 연결 문자열은 CacheParameterSet을 사용하여 해당 매개 변수를 저장하는 데 사용되는 연결 문자열과 완전히 동일해야 합니다. 의미가 동일하더라도 구문이 다른 연결 문자열은 서로 다른 결과를 반환합니다.

다음 코드는 Transact-SQL 문에 대한 매개 변수를 캐싱하여 SqlHelperParameterCache 클래스를 사용하여 검색하는 방법을 보여줍니다.

          [Visual Basic]
          
          '연결 문자열 및 명령 텍스트를 초기화합니다.
          
          '매개 변수를 저장하고 검색하는 데 사용되는 키가 형성됩니다.
          
          Const CONN_STRING As String = _
          
            "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;"
          
          Dim sql As String = _
          
                 "SELECT ProductName FROM Products " + _
          
                 "WHERE Category=@Cat AND SupplierID = @Sup"
          
           
          
          '매개 변수를 캐싱합니다.
          
          Dim paramsToStore(1) As SqlParameter
          
          paramsToStore(0) = New SqlParameter("@Cat", SqlDbType.Int)
          
          paramsToStore(1) = New SqlParameter("@Sup", SqlDbType.Int)
          
          SqlHelperParameterCache.CacheParameterSet(CONN_STRING, _
          
                                                    sql, _
          
                                                    paramsToStore)
          
           
          
          '캐시에서 매개 변수를 검색합니다.
          
          Dim storedParams(1) As SqlParameter
          
          storedParams = SqlHelperParameterCache.GetCachedParameterSet( _
          
                                                           CONN_STRING, sql)
          
          storedParams(0).Value = 2
          
          storedParams(1).Value = 3
          
           
          
          '명령에 매개 변수를 사용합니다.
          
          Dim ds As DataSet
          
          ds = SqlHelper.ExecuteDataset(CONN_STRING, _
          
                                        CommandType.Text, _
          
                                        sql, storedParams)
          
           
          
          [C#]
          
          // 연결 문자열 및 명령 텍스트를 초기화합니다.
          
          // 매개 변수를 저장하고 검색하는 데 사용되는 키가 형성됩니다.
          
          const string CONN_STRING =
          
            "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;";
          
          string spName = "SELECT ProductName FROM Products " + 
          
                          "WHERE Category=@Cat AND SupplierID = @Sup";
          
           
          
          //매개 변수를 캐싱합니다.
          
          SqlParameter[] paramsToStore = new SqlParameter[2];
          
          paramsToStore[0] = New SqlParameter("@Cat", SqlDbType.Int);
          
          paramsToStore[1] = New SqlParameter("@Sup", SqlDbType.Int);
          
          SqlHelperParameterCache.CacheParameterSet(CONN_STRING, 
          
                                                    sql, 
          
                                                    paramsToStore);
          
           
          
          //캐시에서 매개 변수를 검색합니다.
          
          SqlParameter storedParams = new SqlParameter[2];
          
          storedParams = SqlHelperParameterCache.GetCachedParameterSet(
          
                                                        CONN_STRING, sql);
          
          storedParams(0).Value = 2;
          
          storedParams(1).Value = 3;
          
           
          
          //명령에 매개 변수를 사용합니다.
          
          DataSet ds;
          
          ds = SqlHelper.ExecuteDataset(CONN_STRING, 
          
                                        CommandType.StoredProcedure,
          
                                        sql, storedParams);
          

저장 프로시저 매개 변수 검색

또한 SqlHelperParameterCache는 특정 저장 프로시저에 대한 매개 변수 배열을 검색하는 방법을 제공합니다. 두 구현이 있는 GetSpParameterSet라는 오버로드된 메서드가 이 기능을 제공합니다. 이 메서드는 캐시에서 지정된 저장 프로시저에 대한 매개 변수를 검색하려고 시도합니다. 매개 변수가 캐싱되지 않으면 .NET SqlCommandBuilder 클래스를 사용하여 내부적으로 검색한 다음 후속 요청이 있을 때 캐시에 추가합니다. 그런 다음 매개 변수가 클라이언트 배열에 반환되기 전에 해당 매개 변수 설정을 각 매개 변수에 할당합니다. 다음 코드는 Northwind 데이터베이스에서 SalesByCategory 저장 프로시저에 대한 매개 변수를 검색하는 방법을 보여줍니다.

          [Visual Basic]
          
          '연결 문자열 및 명령 텍스트를 초기화합니다.
          
          '매개 변수를 저장하고 검색하는 데 사용되는 키가 형성됩니다.
          
          Const CONN_STRING As String = _
          
            "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;"
          
          Dim spName As String = "SalesByCategory"
          
           
          
          '매개 변수를 검색합니다.
          
          Dim storedParams(1) As SqlParameter
          
          storedParams = SqlHelperParameterCache.GetSpParameterSet( _
          
                                                    CONN_STRING, spName)
          
          storedParams(0).Value = "Beverages"
          
          storedParams(1).Value = "1997"
          
           
          
          '명령에 매개 변수를 사용합니다.
          
          Dim ds As DataSet
          
          ds = SqlHelper.ExecuteDataset(CONN_STRING, _
          
                                        CommandType.StoredProcedure, _
          
                                        spName, storedParams)
          
           
          
          [C#]
          
          // 연결 문자열 및 명령 텍스트를 초기화합니다.
          
          / 매개 변수를 저장하고 검색하는 데 사용되는 키가 형성됩니다.
          
          const string CONN_STRING = 
          
            "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;";
          
          string spName = "SalesByCategory";
          
           
          
          // 매개 변수를 검색합니다.
          
          SqlParameter storedParams = new SqlParameter[2];
          
          storedParams = SqlHelperParameterCache.GetSpParameterSet(
          
                                                    CONN_STRING, spName);
          
          storedParams[0].Value = "Beverages";
          
          storedParams[1].Value = "1997";
          
           
          
          //명령에 매개 변수를 사용합니다.
          
          DataSet ds;
          
          ds = SqlHelper.ExecuteDataset(CONN_STRING, 
          
                                        CommandType.StoredProcedure,
          
                                        spName, storedParams);
          

내부 디자인

Data Access Application Block에는 전체 소스 코드와 디자인에 대한 자세한 가이드가 포함되어 있습니다. 이 절에서는 주요 구현 정보를 설명합니다.

SqlHelper 클래스 구현 정보

SqlHelper 클래스는 정적 메서드 집합을 통해 데이터 액세스 기능을 캡슐화하기 위한 것입니다. 이 클래스는 상속되거나 인스턴스화될 수 없기 때문에 개인 생성자를 사용하여 상속 불가능 클래스로 선언됩니다.

SqlHelper 클래스에서 구현되는 각 메서드는 일관성 있는 오버로드 집합을 제공합니다. 또한 개발자가 데이터에 액세스하는 데 필요한 수준의 융통성을 제공하는 반면 SqlHelper 클래스를 사용하여 명령을 실행하기 위해 잘 정의된 패턴을 제공합니다. 각 메서드에 제공되는 오버로드는 서로 다른 메서드 인수를 지원하므로, 개발자는 연결, 트랜잭션 및 매개 변수 정보를 전달하는 방법을 결정할 수 있습니다. SqlHelper 클래스에서 구현되는 메서드는 다음과 같습니다.

  • ExecuteNonQuery. 이 메서드는 행이나 값을 반환하지 않는 명령을 실행하는 데 사용됩니다. 일반적으로 데이터베이스 업데이트를 실행하는 데 사용되지만, 저장 프로시저에서 출력 매개 변수를 반환하는 데에도 사용될 수 있습니다.
  • ExecuteReader. 이 메서드는 명령에 의해 반환되는 결과 집합이 들어 있는 SqlDataReader 개체를 반환하는 데 사용됩니다.
  • ExecuteDataset. 이 메서드는 명령에 의해 반환되는 결과 집합이 들어 있는 DataSet 개체를 반환합니다.
  • ExecuteScalar. 이 메서드는 단일 값을 반환합니다. 이 값은 항상 명령에 의해 반환되는 첫 번째 행의 첫째 열입니다.
  • ExecuteXmlReader. 이 메서드는 FOR XML 쿼리에서 XML 조각을 반환합니다.

SqlHelper 클래스에는 공개 메서드 외에도 매개 변수를 관리하고 명령 실행을 준비하는 데 사용되는 많은 개인 함수가 포함되어 있습니다. 클라이언트가 호출하는 메서드 구현에 관계없이 모든 명령은 SqlCommand 개체를 사용하여 실행됩니다.SqlCommand 개체가 실행되기 전에 매개 변수 컬렉션에 모든 매개 변수를 추가한 다음 Connection, CommandType, CommandTextTransaction 속성을 올바르게 설정해야 합니다. SqlHelper 클래스의 개인 함수는 클라이언트 응용 프로그램이 호출하는 오버로드된 메서드 구현에 관계없이 주로 SQL Server 데이터베이스에 대한 명령을 일관성 있게 실행할 수 있는 수단을 제공하기 위한 것입니다. SqlHelper 클래스의 개인 유틸리티 함수는 다음과 같습니다.

  • AttachParameters: 실행 중인 SqlCommand에 필요한 SqlParameter 개체를 첨부하는 데 사용되는 함수
  • AssignParameterValues: SqlParameter 개체에 값을 할당하는 데 사용되는 함수
  • PrepareCommand: 연결, 트랜잭션 컨텍스트 등과 같은 명령 속성을 초기화하는 데 사용되는 함수
  • ExecuteReader: ExecuteReader의 이 개인 구현은 읽기 프로그램과 가장 효과적으로 연관되는 연결 수명을 관리하기 위해 해당 CommandBehavior를 사용하여 SqlDataReader 개체를 여는 데 사용됩니다.

SqlHelperParameterCache 클래스 구현 정보

매개 변수 배열이 개인 Hashtable에 캐싱됩니다. 캐싱된 매개 변수 배열에 영향을 미치지 않고 클라이언트 응용 프로그램에서 매개 변수 값 등을 변경할 수 있도록 캐시에서 검색된 매개 변수를 복사합니다. 이 목적을 위해 CloneParameters라는 개인 공유 함수를 사용합니다.

질문과 대답(FAQ)

이 릴리스의 새로운 기능은 무엇입니까?

Data Access Application BlockRTM 릴리스에는 다음과 같은 새로운 기능 및 베타 2.0 릴리스에서 변경된 기능이 포함되어 있습니다.

  • SqlHelper 클래스 메서드의 트랜잭션 오버로드에 더 이상 SqlConnection 매개 변수가 필요하지 않습니다. 이번 릴리스에서는 연결 정보가 SqlTransaction 개체에서 파생되기 때문에 메서드 서명에 SqlConnection 개체 매개 변수를 포함시킬 필요가 없습니다.
  • GetSpParameterSet 메서드는 ADO.NET CommandBuilder 클래스의 DeriveParameters 메서드를 사용하여 저장 프로시저에 필요한 매개 변수를 확인합니다. 이 기능은 데이터베이스에 직접 쿼리하여 정보를 검색하는 베타 2.0 릴리스에 사용된 기술보다 더욱 효과적입니다.

XCOPY 배포를 사용하여 Data Access Application Block 어셈블리를 배포할 수 있습니까?

. 컴파일한 후 Microsoft,ApplicationBlocks.Data.dll 어셈블리가 XCOPY를 배포할 수 있습니다.

ExecuteDataset 메서드를 사용해야 하는 시기와 ExecuteReader 메서드를 사용해야 하는 시기는 언제입니까?

실제 질문은 DataSet 개체에 여러 데이터 행을 반환해야 하는 시기와 DataReader를 사용해야 하는 시기입니다. 대답은 원시 성능과 비교하여 융통성 면에서의 우선 순위와 특정 응용 프로그램의 필요성에 따라 달라집니다. DataSets는 데이터에 대한 융통성 있고 연결이 끊긴 관계형 보기를 제공하고, DataReaders는 매우 높은 성능의 읽기 전용 전방형 커서만 제공합니다. DataSetsDataReaders에 대한 자세한 비교는 Data Access Architecture Guide 를 참조하십시오.

ExecuteDataset을 사용하여 여러 테이블이 있는 DataSet을 반환하는 방법은 무엇입니까?

(여러 SELECT 문을 실행하거나 다른 저장 프로시저를 중첩 호출하여) 여러 행 집합을 반환하는 저장 프로시저를 만들고 ExecuteDataset 메서드로 해당 프로시저를 실행하여 여러 테이블이 들어 있는 DataSet을 검색할 수 있습니다.

예를 들어, 데이터베이스에 다음과 같은 저장 프로시저가 있다고 가정합니다.

          CREATE PROCEDURE GetCategories
          
          AS
          
          SELECT * FROM Categories
          
          GO
          
          CREATE PROCEDURE GetProducts
          
          AS
          
          SELECT * FROM Products
          
            
          

다음 코드 샘플에 설명된 것처럼 이들 프로시저를 중첩 호출하는 마스터 저장 프로시저를 만들 수 있습니다.

          CREATE PROCEDURE GetCategoriesAndProducts
          
          AS
          
          BEGIN
          
            EXEC GetCategories
          
            EXEC GetProducts
          
          END
          
            
          

ExecuteDataset 메서드를 사용하여 이 마스터 저장 프로시저를 실행하면 각각 카테고리 데이터와 제품 데이터가 들어 있는 두 테이블이 포함된 하나의 DataSet이 반환됩니다.

참고 ExecuteDataset 메서드에서는 반환되는 테이블에 사용자에 맞게 설정할 수 있는 이름을 할당할 수 없습니다. 첫 번째 테이블은 항상 번호가 0이고 이름이 Table입니다. 두 번째 테이블은 번호가 1이고 이름이 Table1입니다. 테이블의 이름과 번호는 항상 이런 식으로 지정됩니다.

다른 응용 프로그램 블록이 있습니까?

Data Access Application Block은 현재 릴리스되어 있는 여러 Application Blocks 중 하나입니다. 이러한 Application Block은 개발자가 프로젝트에서 직면하는 일반적인 문제들을 해결합니다. Application Block.NET 응용 프로그램에 빠르고 쉽게 연결됩니다.

사용자 의견 및 지원

질문? 설명? 제안? Data Access Application Block에 대한 사용자 의견은 devfdbck@microsoft.com으로 보내주십시오.

Application Blocks for .NET.NET 분산 응용 프로그램 개발 입문자용으로, 샘플 코드와 설명서를 "있는 그대로" 제공합니다. Application Blocks for .NET은 테스트를 거쳐 강력한 코드 집합으로 간주되나, 전통적인 Microsoft 제품처럼 지원되지는 않습니다.

또한 이 프로그램 사용자를 지원하기 위해 뉴스 그룹이 만들어졌습니다. 온라인 열린 포럼을 통해 동료 및 Microsoft Support Professionals과 논의하려면 이 뉴스 그룹을 사용하십시오.

그 밖의 모든 사람들에게는 질문과 설명을 통해 도움을 주며, 본사의 개발팀에서 뉴스 그룹을 매일 모니터링합니다.
뉴스 그룹: 웹 기반 독자
http://msdn.microsoft.com/newsgroups/loadframes.asp?icp=msdn&slcid=us&newsgroup=microsoft.public.dotnet.distributed_apps

뉴스 그룹: NNTP 독자
news://msnews.microsoft.com/microsoft.public.dotnet.distributed_apps

.NET의 강력한 기능을 배우고 이용하시겠습니까? Microsoft Technology Centers의 엔지니어와 함께 작업하여 개발의 유용한 정보를 학습하십시오. 자세한 내용을 보려면 http://www.microsoft.com/business/services/mtc.asp 를 방문하십시오.

추가로 도움말이 필요하십니까? 간단한 컨설팅을 위한 혁신적인 솔루션인 Advisory Services 지원에 대한 최신 추가된 도움말을 확인해 보십시오. Advisory Services에 대한 자세한 내용을 보려면 http://support.microsoft.com/default.aspx?scid=FH;EN-US;offer58&FR=0&SD=GN&LN=EN-US&CT=SD&SE=NONA 를 참조하십시오.

추가 정보

Data Access Application BlockData Access in .NET Architecture Guide 에서 자세히 설명된 유용한 정보 및 일반 디자인 원칙을 기반으로 디자인되고 개발됩니다. 데이터 액세스에 대한 자세한 내용은 이 가이드를 참조하십시오.

공동 작업자

기고 및 검토를 도와준 Susan Warren, Brad Abrams, Andy Dunn, Michael Day, Mark Ashton, Gregory Leake, Steve Busby, Kenny Jones, David Schleifer, Andrew Roubin(Vorsite Corp.), Jeffrey Richter(Wintellect), Bernard Chen(Sapient)Matt Drucker(Turner Broadcasting)에게 깊은 감사를 드립니다.

또한, 컨텐트팀의 Tina Burden(Entirenet), Shylender Ramamurthy(Infosys Technologies Ltd)Filiberto Selvas Patino에게도 감사를 드립니다.

 

articles
recent replies
recent trackbacks
notice
Admin : New post