C#からのデータベース操作には、ADO.NETを 利用します。
ADO.NETでは、必要 なときにデータベースに接続して、データをメモリに取込み、そのデータ
 に対して操作します。ここでは、アクセスデータべ−ス(.mdbファイル)を操作する方法について解説します。  
  


  データア ダプタを作成する
  データ読込用のデータセットを作成する
  データ表示用のグリッドを作成する
  データグリッドにデータベースをすべて読 み込む
  データグリッドにデータベースを選択的に 読み込む
  データグ リッドを利用せず、データベースからデータを選択的に読み込む


データアダプタを作成する

  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データの読込み
                   }
               }