データアダプタを作成する
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データの読込み
}
}
|