工作样本
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()用于从数据库中加载数据
示例:将数据从数据库显示到 gridview
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 方法使用 SELECT 从数据源中检索行
由关联的 SelectCommand 属性指定的语句。这
与 SELECT 语句关联的连接对象必须有效,
但它不需要打开。如果连接之前关闭
调用填充,打开它以检索数据,然后关闭。如果
连接在调用 Fill 之前打开,它保持打开状态。
Fill 操作然后将行添加到目标 DataTable 对象
在 DataSet 中,如果尚未创建 DataTable 对象,则创建它们
存在。创建DataTable对象时,Fill操作正常
仅创建列名元数据。但是,如果 MissingSchemaAction
属性设置为 AddWithKey,适当的主键和
约束也被创建。
DataAdapter.Update()
更新是逐行执行的。对于每一个插入,
修改和删除的行,Update 方法确定类型
已对其执行的更改(插入、更新或删除)。
根据更改的类型,插入、更新或删除命令
模板执行以将修改的行传播到数据源。
当应用程序调用 Update 方法时,DataAdapter 检查
RowState 属性,并执行所需的 INSERT、UPDATE 或
DELETE 语句迭代地为每一行,基于的顺序
在 DataSet 中配置的索引。例如,Update 可能会执行一个
DELETE 语句,后跟一个 INSERT 语句,然后是另一个
DELETE 语句,由于 DataTable 中的行的顺序。
需要注意的是,这些语句不是作为批处理执行的
过程;每行单独更新。应用程序可以调用
GetChanges 方法在您必须控制的顺序的情况下
语句类型(例如,INSERT before UPDATE)。更多
有关信息,请参阅使用 DataAdapters (ADO.NET) 更新数据源。