作業サンプル
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.OleDb;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private OleDbConnection con =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\test.mdb\";");
private OleDbDataAdapter adapter;
DataTable table = new DataTable("person");
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
con.Open();
;
adapter = new OleDbDataAdapter("select ID, p_name, p_age from person", con);
adapter.Fill(table);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
adapter.DeleteCommand = builder.GetDeleteCommand();
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.InsertCommand = builder.GetInsertCommand();
dataGridView1.DataSource = table;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
con.Close();
con.Dispose();
}
private void btnDelete_Click(object sender, EventArgs e)
{
DataRow[] row = table.Select("p_age = 10");
if (row.Length > 0)
{
for (int i = 0; i < row.Length; i++)
{
row[i].Delete();
}
}
adapter.Update(table);
}
}
}
簡単な言葉で。
DataAdapter.Fill()は、データベースからデータをロードするために使用されます
例:データベースからグリッドビューへのデータの表示
using (DataTable table = new DataTable()) {
using (OleDbDataAdapter adapter = new OleDbDataAdapter("select name,age from person", conObject)) {
adapter.Fill(table);
BindingSource bs = new BindingSource { DataSource = table };
dgReader.DataSource = bs;
}
}
編集が完了すると、DataAdapter.Update()は、基になる接続を使用して、変更されたすべてのデータ情報をデータベースにコミットします。
DataAdapter.Fill()
Fill メソッドは、関連する SelectCommand プロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得します。SELECT ステートメントに関連付けられた接続オブジェクトは有効である必要がありますが、開いている必要はありません。Fill が呼び出される前に接続が閉じられた場合は、データを取得するために接続が開かれ、その後閉じられます。Fill が呼び出される前に接続が開いている場合は、開いたままになります。
次に、Fill 操作は、DataSet 内の宛先 DataTable オブジェクトに行を追加し、DataTable オブジェクトがまだ存在しない場合は作成します。DataTable オブジェクトを作成する場合、Fill 操作は通常、列名のメタデータのみを作成します。ただし、MissingSchemaAction プロパティが AddWithKey に設定されている場合は、適切な主キーと制約も作成されます。
DataAdapter.Update()
更新は行ごとに実行されます。挿入、変更、および削除された行ごとに、Update メソッドはその行に対して実行された変更の種類 (挿入、更新、または削除) を判別します。変更の種類に応じて、Insert、Update、または Delete コマンド テンプレートが実行され、変更された行がデータ ソースに伝達されます。アプリケーションが Update メソッドを呼び出すと、DataAdapter は RowState プロパティを調べ、DataSet で構成されたインデックスの順序に基づいて、必要な INSERT、UPDATE、または DELETE ステートメントを行ごとに繰り返し実行します。たとえば、Update は、DataTable 内の行の順序により、DELETE ステートメントを実行した後、INSERT ステートメントを実行し、さらに別の DELETE ステートメントを実行する場合があります。
これらのステートメントはバッチ処理として実行されないことに注意してください。各行は個別に更新されます。ステートメントの種類の順序を制御する必要がある場合 (たとえば、UPDATE の前に INSERT を実行する場合)、アプリケーションは GetChanges メソッドを呼び出すことができます。詳細については、「DataAdapter を使用したデータ ソースの更新 (ADO.NET)」を参照してください。