データセットに値を入力するヘルパー クラスの記述
Customer テーブル用に作成したデータセット スキーマは、データ構造です。実行時には、データベースからデータセット構造にデータを入力するコードが必要です。このセクションでは、データセットにデータを入力するヘルパー クラスを作成します。
データセットにデータを入力するヘルパー クラスを作成する
ソリューション エクスプローラで太字のプロジェクト名を右クリックし、[追加]をポイントして[新しい項目の追加]をクリックします。
[新しい項目の追加]ダイアログ ボックスで、Visual Studio の[テンプレート]リストから[クラス]を選択します。
[名前]フィールドに「DataSetConfiguration」と入力し、[追加]をクリックします。
注 クラスを“Code”ディレクトリに置くかどうかを尋ねるダイアログ ボックスが表示されたら[はい]をクリックします。
クラス署名の上で、System.Data 名前空間と System.Data.OleDb 名前空間用の "Imports"[Visual Basic] または "using"[C#] 宣言をクラスの先頭に追加します。
Imports System.Data Imports System.Data.OleDb
using System.Data; using System.Data.OleDb;
クラスの先頭で、Xtreme サンプル データベースへの接続文字列を保持するための CONNECTION_STRING という定数を作成します。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/w5dk7atd.alert_note(ja-jp,VS.90).gif" title="Note" 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">「Xtreme サンプル データベースの場所」</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";
```
- 最初の定数の後に、データベース クエリー文字列を保持するための QUERY_STRING という 2 番目の定数を作成します。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/w5dk7atd.alert_note(ja-jp,VS.90).gif" title="Note" 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";
```
- 2 番目の定数の後に、データセットのデータを格納する DataTable という名前を保持するための DATATABLE_NAME という 3 番目の定数を作成します。
次のステップでは、DIRECTORY\_FILE\_PATH 定数を作成します。この定数が必要になるのは、Visual Studio 2005 で Web サイトを作成する場合だけです。それ以外の場合は、このステップを省略してください。
``` vb
Private Const DATATABLE_NAME As String = "Customer"
```
``` csharp
private const string DATATABLE_NAME = "Customer";
```
- 3 番目の定数の下に、xsd ファイルのディレクトリ パスの位置を参照する DIRECTORY_FILE_PATH という 4 番目の定数を作成します。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/w5dk7atd.alert_note(ja-jp,VS.90).gif" title="Note" alt="Note" class="note" />注</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>次の コードは Web サイトの パスを示しています。</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\";
```
データセットに値を入力するプロパティを作成する
- 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
{
}
}
```
この手順には、2 つのオプションがあります。1 つは厳密に型指定された DataSet クラス(Windows プロジェクトで使用可能)を使用するもので、もう 1 つは、汎用 DataSet クラス(Web サイトで使用可能)を使用するオプションです。
厳密に型指定された DataSet クラスを使用する Windows プロジェクトでは、CustomerDataSet プロパティの get 句で CustomerDataSetSchema クラスを宣言してインスタンス化します。このクラスは、前のセクションのデータセット スキーマから生成された厳密に型指定された DataSet クラスです。
Dim myDataSet As CustomerDataSetSchema = New CustomerDataSetSchema()
CustomerDataSetSchema dataSet = new CustomerDataSetSchema();
一般的な DataSet クラスを使用する Web サイト プロジェクトでは、CustomerDataSet プロパティの get 句で DataSet クラスを宣言してインスタンス化し、DataSet インスタンスに XML Schema を適用します。つまり、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");
OleDbConnection クラスを宣言してインスタンス化し、メソッド パラメータとして CONNECTION_STRING 定数を渡します。
Dim myOleDbConnection As OleDbConnection = New OleDbConnection(CONNECTION_STRING)
OleDbConnection oleDbConnection = new OleDbConnection(CONNECTION_STRING);
OleDbDataAdapter クラスを宣言してインスタンス化し、メソッド パラメータとして QUERY_STRING 定数と OleDbConnection インスタンスを渡します。
Dim myOleDbDataAdapter As OleDbDataAdapter = New OleDbDataAdapter(QUERY_STRING, myOleDbConnection)
OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(QUERY_STRING, oleDbConnection);
OleDbDataAdapter インスタンスの Fill() メソッドを呼び出し、CustomerDataSetSchema インスタンスと DATATABLE_NAME 定数を渡します。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/w5dk7atd.alert_note(ja-jp,VS.90).gif" title="Note" 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);
```
- このプロパティを完成するために、DataSet インスタンスを返します。
``` vb
Return myDataSet
```
``` csharp
return dataSet;
```
プロジェクトの任意の場所から呼び出すことができる CustomerDataSet プロパティが作成されます。