DataSetオブジェクト

 DataSetオブジェクトはメモリ上にデータをまとめて記憶するオブジェクトです。メモリ上に簡易複製データベースを配置して、定期的に同期を取るといったような操作をします。そのときに使用するオブジェクトが前述のDataAdapterオブジェクトです。

■ 主なプロパティ

■ DataSetNameプロパティ

 現在のDataSetの名前を取得または設定します。

■ Tablesプロパティ

 DataSetに格納されているテーブルのコレクションを取得します。

■ 主なメソッド

■ Clearメソッド

 すべてのテーブル内の全ての行を削除します。

■ GetXmlメソッド

 DataSetに格納されているデータのXML表現を返します。

■ GetXmlSchemaメソッド

 DataSetに格納されているデータのXML表現のXMLスキーマを返します。

■ ReadXmlメソッド

 XMLスキーマとデータをDataSetに読み込みます。

■ ReadXmlSchemaメソッド

 XMLスキーマをDataSetに読み込みます。

■ WriteXmlメソッド

 DataSetからXMLデータを書き込みます。

■ WriteXmlSchemaメソッド

 DataSetをXMLスキーマとして書き込みます。

 このオブジェクトは複数のオブジェクトで構成されます。図で表してみましょう。

DataSetのイメージ
DataSetのイメージ

 各オブジェクトにはコレクションがあり、その中に複数の子オブジェクトが関連付けられています。

○ プロジェクト

 DataAdapterクラスとDataSetクラスを使ってアプリケーションで使用してみましょう。

プロジェクトの種類 Windows フォーム アプリケーション
プロジェクト名 DataSetTest1

サンプルダウンロード

○ フォームデザイン

 次の図のようにコントロールを配置してください。

コントロールの配置例
コントロールの配置例

○ プログラム

 「接続」ボタンをクリックしたときのイベントプロシージャの記述をしてください。

Form1.vb

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.  '接続文字列を作成する
  3.  Dim conString As String = _
  4.   "Data Source=.;AttachDbFilename=C:¥Work¥Books.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
  5.  'コネクションオブジェクトを生成する
  6.  Dim con As New SqlClient.SqlConnection(conString)
  7.  'SQL文を生成する
  8.  Dim sql As String = "SELECT * FROM M_ユーザー"
  9.  'アダプタオブジェクトを作成する
  10.  Dim ad As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(sql, con)
  11.  'データセットオブジェクトを作成する
  12.  Dim dt As DataSet = New DataSet()
  13.  'データセットとデータベースを同期させる
  14.  ad.Fill(dt)
  15.  'DataGridViewとDataSetを関連付ける
  16.  Me.DataGridView1.DataSource = dt.Tables(0)
  17. End Sub

○ 実行結果

実行結果
実行結果

 DataAdapterオブジェクトを作成する際に、SQLステートメントと使用するConnectionオブジェクトを指定しました。すると、SQLステートメントを元にCommandオブジェクトを生成し、それをプロパティに記憶してくれます。それを元にデータベースに対して命令が実行されます。

 今回のサンプルはDataSetオブジェクトを作成し、DataAdapterオブジェクトのFillメソッドを使って、作成したDataSetオブジェクトとデータベースの同期を取っています。DataSet内には複数のテーブルを保持することができます。読み込んだテーブルはTablesコレクションに保存されますが、その最初のテーブルを使用します。そのため、インデックス「0」番を指定して使用するようにしています。

 DataGridViewコントロールのDataSourceプロパティにテーブルを指定することにより、表示されます。

 次にDataSetをデザイナから作成して利用してみましょう。
 ※ 補足1を参考にして、「SqlDataAdapter」コントロールを表示させてください。

○ プロジェクト

 プロジェクトを作成して確認してみましょう。

プロジェクトの種類 Windows フォーム アプリケーション
プロジェクト名 DataSetTest2

サンプルダウンロード

○ フォームデザイン

 「DataSetTest」プロジェクトと同じようにコントロールを配置してください。そして、DataAdapterオブジェクトを作成しましょう。DataAdapter配置すると以下のようなウィザードが表示されます。今まで使用していたデータベース設定が残っていれば、次の図のように「Books.mdf」を指定して「次へ」をクリックします。設定が残っていない場合は、「新しい接続」ボタンより設定してください。

ウィザードが起動
ウィザードが起動

 次の図のように選択してウィザードを先に進めます。

コマンドの種類の選択
コマンドの種類の選択

 「クエリ ビルダー」ボタンをクリックします。

テーブルの選択
テーブルの選択

 テーブルの追加から「M_書籍」を選択し、「追加」ボタンをクリックして、閉じてください。

テーブルの選択
テーブルの選択

 クエリビルダに追加したテーブルの情報が表示されます。その中から「すべての列」にチェックを入れて「OK」ボタンを押してください。

列の選択
列の選択

 SQLステートメントが生成されました。確認をして、「次へ」をクリックしてください。

SQL文生成
SQL文生成

 ウィザードのレポートが表示されますので、「完了」をクリックしてください。

ウィザード終了
ウィザード終了

 これで、「SqlDataAdapter」オブジェクトと「SqlConnection」オブジェクトが作成されます。

コンポーネントトレイ
コンポーネントトレイ

 次にDataSetオブジェクトを作成しましょう。メニューの「データ」― 「データセットの生成」をクリックします。すると以下のような画面が表示されます。テーブルの選択で表示したいテーブルに「レ」が入っているのを確認し、「OK」をクリックします。

データセット作成画面
データセット作成画面

 すると、コンポーネントトレイとソリューションエクスプーラーに項目が追加されます。

データセットが追加された
データセットが追加された

 DataGridViewコントロールに連結するDataSetを登録しておきましょう。

プロパティの設定
プロパティの設定

○ プログラム

 「接続」ボタンをクリックしたときのイベントプロシージャの記述をしてください。

Form1.vb

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.  ' データベースとデータセットの同期
  3.  Me.SqlDataAdapter1.Fill(Me.DataSet11)
  4. End Sub

○ 実行結果

実行結果
実行結果

 デザイナで設定するとコードで記述する手間が減りました。

前へ   次へ