会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
且行且歌
http://www.cnblogs.com
/*把更改写回数据库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更高效
*/
posted on
2007-07-21 12:39
simhare
阅读(
2601
) 评论(
2
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
导航
博客园
首页
新随笔
联系
订阅
管理
公告