/*把更改写回数据库DataAdapter.Update*/
把更改写回数据库DataAdapter.Update
把更改写回数据库DataAdapter.Update
/**//*把更改写回数据库DataAdapter.Update*/
/**//*Important: 这种在DataTable中进行的插入、更新和删除并不会自动写回数据库
*/
SqlDataAdapter adapter = new SqlDataAdapter(strSql, strConn);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
DataSet ds = new DataSet();
adapter.Fill(ds, "Titles");
//插入记录
DataTable table = ds.Tables["Titles"];
DataRow row = table.NewRow();
row["Title_id"] = "JP1001";
row["title"] = "programming Microsoft .NET";
row["price"] = 59.99m;
row["ytd_sales"] = 100000;
row["type"] = "business";
row["pubdate"] = new DateTime(2002, 5, 1);
table.Rows.Add(row);
//更新数据库
adapter.Update(table);
/**//*DataAdapter的Update方法检查传递给表的每一条记录,把自从上次更新
* (或自从上次调用table的AcceptChanges方法后)被插入、更新或删除的行
* 写回数据库。如果DataSet中包含了多个被修改的DataTable,就把整个DataSet
* 传给Update方法: adapter.Update(ds),所有改变会被一次性写回。
*/
/**//*
* 哦,还有许多演示DataAdapter.Update的用法的示例,演示了通过调用名为GetChanges
* 的方法创建一个只含有被插入、更新或删除行的新的临时DataSet或者DataTable
* ,然后把delta传递给DataAdapter.Update,如下:
* //更新数据库
* DataTable delta = table.GetChanges();
* adapter.Update(delta);
* 这种方法的确好用,但不是必需的。Update会忽略包含已修改和未修改的行的DataTable中
* 未被修改的行。
* 当要控制写回数据库中的更改的内容的顺序时,GetChanges方法发挥作用,
* 如果想在Insert前面执行Delete,以避免主键重复错误,应该这样做:
*/
//DataRowState ---->enum System.Data.DataRowState
//DataRowState.Deleted---->the row was deleted
// using the row.Delete()
DataTable deletes = table.GetChanges(DataRowState.Deleted);
adapter.Update(deletes);
DataTable inserts = table.GetChanges(DataRowState.Added);
adapter.Update(inserts);
/**//*GetChanges的另一个用处是,
* 当更新不是在本地执行时,把机器间的数据传输量减到最小,
* 只传递被改变的DataSet或DataTable比传递整个DataSet或DataTable更高效
*/
/**//*把更改写回数据库DataAdapter.Update*/
/**//*Important: 这种在DataTable中进行的插入、更新和删除并不会自动写回数据库
*/
SqlDataAdapter adapter = new SqlDataAdapter(strSql, strConn);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
DataSet ds = new DataSet();
adapter.Fill(ds, "Titles");
//插入记录
DataTable table = ds.Tables["Titles"];
DataRow row = table.NewRow();
row["Title_id"] = "JP1001";
row["title"] = "programming Microsoft .NET";
row["price"] = 59.99m;
row["ytd_sales"] = 100000;
row["type"] = "business";
row["pubdate"] = new DateTime(2002, 5, 1);
table.Rows.Add(row);
//更新数据库
adapter.Update(table);
/**//*DataAdapter的Update方法检查传递给表的每一条记录,把自从上次更新
* (或自从上次调用table的AcceptChanges方法后)被插入、更新或删除的行
* 写回数据库。如果DataSet中包含了多个被修改的DataTable,就把整个DataSet
* 传给Update方法: adapter.Update(ds),所有改变会被一次性写回。
*/
/**//*
* 哦,还有许多演示DataAdapter.Update的用法的示例,演示了通过调用名为GetChanges
* 的方法创建一个只含有被插入、更新或删除行的新的临时DataSet或者DataTable
* ,然后把delta传递给DataAdapter.Update,如下:
* //更新数据库
* DataTable delta = table.GetChanges();
* adapter.Update(delta);
* 这种方法的确好用,但不是必需的。Update会忽略包含已修改和未修改的行的DataTable中
* 未被修改的行。
* 当要控制写回数据库中的更改的内容的顺序时,GetChanges方法发挥作用,
* 如果想在Insert前面执行Delete,以避免主键重复错误,应该这样做:
*/
//DataRowState ---->enum System.Data.DataRowState
//DataRowState.Deleted---->the row was deleted
// using the row.Delete()
DataTable deletes = table.GetChanges(DataRowState.Deleted);
adapter.Update(deletes);
DataTable inserts = table.GetChanges(DataRowState.Added);
adapter.Update(inserts);
/**//*GetChanges的另一个用处是,
* 当更新不是在本地执行时,把机器间的数据传输量减到最小,
* 只传递被改变的DataSet或DataTable比传递整个DataSet或DataTable更高效
*/