다음을 통해 공유


데이터 집합을 채우기 위한 도우미 클래스 작성

고객 테이블에 대해 방금 작성한 데이터 집합 스키마는 데이터 구조입니다. 런타임에는 데이터 집합 구조를 데이터베이스의 데이터로 채우기 위한 코드가 필요합니다. 이 부분에서는 데이터 집합을 데이터로 채우는 도우미 클래스를 만듭니다.

데이터 집합을 데이터로 채우기 위한 도우미 클래스를 만들려면

  1. 솔루션 탐색기에서 굵게 표시된 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목 추가를 클릭합니다.

  2. 새 항목 추가 대화 상자의 Visual Studio에 설치되어 있는 템플릿 목록에서 클래스를 선택합니다.

  3. 이름 필드에 "DataSetConfiguration"을 입력하고 추가를 클릭합니다.

    Note참고

    클래스를 "Code"라는 디렉터리에 저장할지 묻는 대화 상자가 나타나면 예를 클릭합니다.

  4. 클래스 서명 위에서 System.Data 및 System.Data.OleDb 네임스페이스에 대한 "Imports"[Visual Basic] 또는 "using"[C#] 선언을 클래스 위에 추가합니다.

    Imports System.Data
    Imports System.Data.OleDb
    
    using System.Data;
    using System.Data.OleDb;
    
  5. 클래스의 맨 위에서 Xtreme 샘플 데이터베이스에 대한 연결 문자열을 저장하기 위한 CONNECTION_STRING이라는 상수를 만듭니다.

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\e2c9s1d7.alert_note(ko-kr,VS.90).gif" alt="Note" class="note" />참고</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>아래 코드에서는 Crystal Reports for Visual Studio 2005의 샘플 데이터베이스 위치를 사용합니다. xtreme.mdb 데이터베이스의 파일 디렉터리 경로가 올바른지 확인하려면 <a href="ms225530(v=vs.90).md">&quot;Xtreme 샘플 데이터베이스 위치&quot;</a>를 참조하십시오.</p></td>
</tr>
</tbody>
</table>

``` vb
Private Const CONNECTION_STRING As String ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio 8\Crystal Reports\Samples\En\Database\xtreme.mdb"
```

``` csharp
private const string CONNECTION_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Program Files\\Microsoft Visual Studio 8\\Crystal Reports\\Samples\\En\\Database\\xtreme.mdb";
```
  1. 첫 번째 상수 아래에서 데이터베이스 쿼리 문자열을 저장하기 위한 QUERY_STRING이라는 두 번째 상수를 만듭니다.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\e2c9s1d7.alert_note(ko-kr,VS.90).gif" alt="Note" class="note" />참고</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>이 간단한 쿼리 문자열은 기준을 설정하지 않은 채 모든 열을 선택합니다. Xtreme 샘플 데이터베이스의 경우에는 이 쿼리에서 소량의 데이터만 반환됩니다. 그러나 대부분의 경우에는 WHERE 절을 포함하고 한정된 개수의 열을 선택하여 쿼리를 제한하는 것이 좋습니다.</p></td>
</tr>
</tbody>
</table>

``` vb
Private Const QUERY_STRING As String = "SELECT * FROM CUSTOMER"
```

``` csharp
private const string QUERY_STRING = "SELECT * FROM CUSTOMER";
```
  1. 데이터 집합에 채울 DataTable의 이름을 저장하기 위한 DATATABLE_NAME이라는 세 번째 상수를 두 번째 상수 아래에 만듭니다.
다음은 DIRECTORY\_FILE\_PATH 상수를 만드는 단계입니다. 이 상수는 Visual Studio 2005에서 웹 사이트를 만드는 경우에만 필요합니다. 다른 경우에는 이 단계를 건너뜁니다.

``` vb
Private Const DATATABLE_NAME As String = "Customer"
```

``` csharp
private const string DATATABLE_NAME = "Customer";
```
  1. xsd 파일의 디렉터리 경로 위치를 가리키는 DIRECTORY_FILE_PATH라는 네 번째 상수를 세 번째 상수 아래에 만듭니다.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\e2c9s1d7.alert_note(ko-kr,VS.90).gif" alt="Note" class="note" />참고</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>아래 코드에서는 웹 사이트 경로를 보여 줍니다.</p></td>
</tr>
</tbody>
</table>

``` vb
Private Const DIRECTORY_FILE_PATH As String = "C:\WebSites\VB_Web_Data_DataSets\"
```

``` csharp
private const string DIRECTORY_FILE_PATH = @"C:\WebSites\CS_Web_Data_DataSets\";
```

데이터 집합을 채우는 속성을 만들려면

  1. DataSet 인스턴스를 반환하는 CustomerDataSet이라는 읽기 전용 속성을 만듭니다. 클래스와 속성을 인스턴스화하지 않고도 직접 호출할 수 있도록 메서드에 "Shared"[Visual Basic] 또는 "static"[C#] 한정자를 지정합니다.
``` vb
Public Shared ReadOnly Property CustomerDataSet() As DataSet
Get

End Get
End Property
```

``` csharp
public static DataSet CustomerDataSet
{
get
{

}
}
```
  1. 이 단계를 수행하는 방법은 두 가지입니다. 하나는 Windows 프로젝트에 사용할 수 있는 강력한 형식의 DataSet 클래스와 함께 사용하는 방법이고, 다른 하나는 웹 사이트에 사용할 수 있는 일반적인 DataSet 클래스와 함께 사용하는 방법입니다.

    • 강력한 형식의 DataSet 클래스를 사용하는 Windows 프로젝트의 경우 CustomerDataSet 속성의 get 절 안에서 CustomerDataSetSchema 클래스(이전 부분에서 데이터 집합 스키마에서 생성한 강력한 형식의 DataSet 클래스)를 선언하고 인스턴스화합니다.

      Dim myDataSet As CustomerDataSetSchema = New
      CustomerDataSetSchema()
      
      CustomerDataSetSchema dataSet = new CustomerDataSetSchema();
      
    • 일반적인 DataSet 클래스를 사용하는 웹 사이트 프로젝트의 경우 CustomerDataSet 속성의 get 절 안에서 DataSet 클래스를 선언하고 인스턴스화한 다음 XML 스키마를 DataSet 인스턴스에 적용합니다. 즉, CustomerDataSetSchema.xsd의 파일 디렉터리 경로를 DataSet 인스턴스의 ReadXmlSchema() 메서드에 문자열 매개 변수로 전달합니다.

      Dim myDataSet As DataSet = New DataSet()
      myDataSet.ReadXmlSchema(DIRECTORY_FILE_PATH & "XMLSchema.xsd")
      
      DataSet dataSet = new DataSet();
      dataSet.ReadXmlSchema(DIRECTORY_FILE_PATH + "XMLSchema.xsd");
      
  2. OleDbConnection 클래스를 선언하여 인스턴스화하고 여기에 CONNECTION_STRING 상수를 메서드 매개 변수로 전달합니다.

    Dim myOleDbConnection As OleDbConnection = New OleDbConnection(CONNECTION_STRING)
    
    OleDbConnection oleDbConnection = new OleDbConnection(CONNECTION_STRING);
    
  3. OleDbDataAdapter 클래스를 선언하여 인스턴스화하고 여기에 QUERY_STRING 상수와 OleDbConnection 인스턴스를 메서드 매개 변수로 전달합니다.

    Dim myOleDbDataAdapter As OleDbDataAdapter = New OleDbDataAdapter(QUERY_STRING, myOleDbConnection)
    
    OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(QUERY_STRING, oleDbConnection);
    
  4. OleDbDataAdapter 인스턴스의 Fill() 메서드를 호출하여 CustomerDataSetSchema 인스턴스와 DATATABLE_NAME 상수를 전달합니다.

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\e2c9s1d7.alert_note(ko-kr,VS.90).gif" alt="Note" class="note" />참고</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Fill() 메서드는 데이터베이스에서 검색된 데이터를 사용하여 DataSet 인스턴스 내에서 지정된 DataTable을 채웁니다.</p></td>
</tr>
</tbody>
</table>

``` vb
myOleDbDataAdapter.Fill(myDataSet, DATATABLE_NAME)
```

``` csharp
oleDbDataAdapter.Fill(dataSet, DATATABLE_NAME);
```
  1. DataSet 인스턴스를 반환하여 이 속성을 완료합니다.
``` vb
Return myDataSet
```

``` csharp
return dataSet;
```

CustomerDataSet 속성이 생성되고 프로젝트의 아무 위치에서나 이 속성을 호출할 수 있습니다.