|  データアダプタを作成する 
 1   ツールボックス(ツールボックスが開いていない場合は、表示メニューから「ツールボックス」を選択
してください。)の「データ」から、
 OleDbDataAdapterを選択し、フォー
ム上にドラッグし、ドロップする。
 
 2  すると、データリンクプロパティのダイアログボックスが開きますので、「プロバイダ」タブを選択し、表示されるリストの中から、「Microsoft
 Jet 4.0 OLE DB Provider」を
選択します。
 
 3 「次へ」ボタンを押すと、プログラムから接続するデータベースの選択画面が開きますので、データベース名及びユーザー名(デフォルトで
 はAdmin)、パスワード(デフォルトでは省略)を選択し、「接
続のテスト」ボタンでデータベースが接続可能なことを確認します。確認後、
 「OK」ボタンを押します。
 
 4 次にデータアダプタ用構成ウィザードが表示されます。ここでは、通常「SQL
ステートメントの使用(デフォルト)」を選択し、「次へ」を押し
 ます。
 
 5 最後に、データベース接続のためのSQLステートメントを記述します。接続先の絞込みは、後でプログラムのコード中でできますので、通
 常は、接続したいデータベーステーブルすべてを接続先として指定しておきます。
 
 (例)  SELECT * FROM TESTテーブル
 
 6 これでデータアダプタの作成は完了です。データアダプタの構成結果を示す「データアダプタ構成ウィザード」を最終的に確認し、「完了」ボ
 タンを押してください。
 
 
    | 
    
      |  データ読込用のデータセットを作成する 
 1 ADO.NETでは、プログラムとデータベースの間に、データを一時的に保管する場所(データセット)を介在させる必要があり
ます。
 
 2 データセットを作成するには、「データ」メニューの「データセット
の生成」を選択します。
 
 3 「データセットの生成」ダイアログで、新規作成ラジオボタンを選択し、新たに作成するデータセット名を指定します。「データセットに追加す
 るテーブルの選択」テキストボックス内には、先にSQLステートメントで指定したTESTテーブルがチェックされて表示されます。
 
 4 ここで、「OK」ボタンを押すと、データセットの生
成が完了します。
 
 
    
 | 
    
      |  データ表示用のデータグリッドを作成する データグリッドは、データセットのデータ表示用のコントロールで、スプレッドシートのよ
うなイメージとなります。
 データセットとの関連付けは、DataSource、DataMemberの両プロパティで行います。
 
 (例)  dataGrid1.DataSource=dataSet1;
 dataGrid1.DataMember=TESTテーブル;
 
 
    | 
    
      |  データグリッドにデータベースをすべて読
み込む データグリッドにすべてのデータを読み込むには、データアダプタのFillメソッドを用います。この場合、データグリッドの行(Row)がデータ数分だけ
増加します。
 
 (例)  oleDbDataAdapter1.Fill(dataSet1);
 
 
    | 
    
      |  データグリッドにデータベースを選択的に
読み込む データベースのボリュームが大きく、すべてのデータを読み込んだ場合に、データセット及びデータグリッドが過大になってしまう場合がありま
 す。最悪の場合、メモリ不足になるかプログラムがハングアップしてしまいます。
 また、データベースの各列(field)のうち、特定の列のみを読み込みたい場合があります。以上のような場合には、データベースを選択的に読
 込みます。
 ここでは、データベース操作言語として標準化されているSQL文を使って読み込んでみます。TESTテーブルに、NAME列とCOMPANY列があ
 る
場合を想定します。
 
 string strSQL="SELECT NAME FROM TESTテーブル WHERE
COMPANY='データベース株式会社'";
 myOleDbCommand = new
System.Data.OleDb.OleDbCommand(strSQL, oleDbConnection1);
 oleDbDataAdapter1.SelectCommand = myOleDbCommand;
 oleDbDataAdapter1.Fill(dataSet1);
 
 
    
 | 
    
      |  データグ
リッドを利用せず、データベースからデータを選択的に読み込む 用途としては少ないと思いますが、プログラム中から一定の条件に合致するデータをデータベースから引用したい場合などはデータグリッドは
 特に必要ありませ
ん。この場合、データセットに直接アクセスしてデータを取り出します。
 
 string strSQL="SELECT NAME,COMPANY FROM TESTテーブル WHERE
COMPANY='データベース株式会社'";
 myOleDbCommand = new
System.Data.OleDb.OleDbCommand(strSQL, oleDbConnection1);
 oleDbDataAdapter1.SelectCommand = myOleDbCommand;
 oleDbDataAdapter1.Fill(dataSet1);
 string [,]  readdata = new string[100,2];
 int i=0;
 foreach(DataTable thisTable in dataSet1.Tables)  //データセットのテーブル毎の読込み
 {
 foreach(DataRow myRow in
thisTable.Rows)    //データセットのデータ行(Row)毎の読込
 {
 readdata[i,0]=myRow[0].ToString(); //NAMEデータの読込み
 readdata[i,1]=myRow[1].ToString(); //COMPANYEデータの読込み
 i+=1;
 }
 }
 
 SQLのWHERE条件文に該当する項目が1件であることが
分かっている場合には、データセットの容量を節約するため、データセットの行(Row)
 を常に1行に保つ方法をお勧めします。この場合、事前にデータセッ
トをクリアします。
 
 string strSQL="SELECT NAME,COMPANY FROM TESTテーブル WHERE
COMPANY='データベース株式会社'";
 myOleDbCommand = new
System.Data.OleDb.OleDbCommand(strSQL, oleDbConnection1);
 oleDbDataAdapter1.SelectCommand = myOleDbCommand;
 dataSet1.Clear(); //データセットをクリア
 oleDbDataAdapter1.Fill(dataSet1);
 string simei,kaisha;
 int i=0;
 foreach(DataTable thisTable in dataSet1.Tables)  //データセットのテーブル毎の読込み
 {
 foreach(DataRow myRow in
thisTable.Rows)    //データセットのデータ行(Row)毎の読込
 {
 simei=myRow[0].ToString();  //NAMEデータの読込み
 kaisha=myRow[1].ToString(); //COMPANYEデータの読込み
 }
 }
 
 
    |