KB-To Delete DataRow via DataAdapter
用DataAdpater+CommandBuilder來新增、修改、刪除資料真是件爽快的事兒,但過去我用它Update資料的經驗不多,所以今天在處理刪除時,出了點問題。
我先簡單介紹一下如何用DataAdapter來更新資料吧!
例如:
//
建一個SELECT Command
OracleConnection cn=
new
OracleConnection("Data Source=ORA;User Id=Blah;Password=Blah");
OracleCommand cmd=
new
OracleCommand("SELECT * FROM myTable WHERE PK=:pk",cn);
cmd.Parameters.Add
("pk",OracleDbType.Varchar2).Value="123";
//
用SELECT Command建立DataAdapter
OracleDataAdapter
da=
new
OracleDataAdapter(cmd);
//
用DataAdapter建立CommandBuilder
OracleCommandBuilder
cb=
new
OracleCommandBuilder(da);
DataTable dt=
new
DataTable();
//
查詢資料庫後取得DataRow
da.Fill
(dt);
//
改改資料
dt.Rows
[0]["Col1"]="100";
//
另外新增一筆
DataRow newRow=dt.NewRow();
newRow
["PK"]=555;
newRow
["Col1"]="123";
newRow
["Col2"]="ABC";
dt.Rows.Add
(newRow);
//
要在DB上完成以上的更新及新增動作,只要這樣做就可以
da.Update
(dt);
//
感謝DataAdapter與CommandBuilder!!!
很簡單吧! 舉一反三,我要刪除資料時,就寫了
dt.Rows.RemoveAt(0);
da.Update(dt);
結果資料還是好好地躺在DB中,啥事也沒發生。
原來,DataAdapter要更新資料時,會以DataRow的RowState來決定要新增、修改或是刪除。如果我們把DataRow從DataTable中拔掉了,DataAdapter當然不知道有一列待刪。正確的寫法應該是:
dt.Rows[0].Delete();
da.Update(dt);
參考資料:
http://blog.yam.com/thinkingmore/archives/691002.html
意見
沒有意見
你的看法呢?
標題
(必要的)
姓名
(必要的)
你的URL
(選擇性的
)
意見
(必要的)
Remember Me?
請輸入以上的數字:
搜尋
Go
<
September 2006
>
Sun
Mon
Tue
Wed
Thu
Fri
Sat
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
【工商服務】
最新回應
Tags 分類檢視
.NET
AJAX
ASP.NET
Bicycle
CODE
Collections
Community Server
CSS
Debug
English
Hiking
IE
IIS
Javascript
jQuery
KB
Life
Linq
MCSE
ORACLE
Performance
Reporting Service
Security
Sharepoint
SQL 2000
SQL 2005
SQL 2008
TechEd
ThinkPad
Tips
Tools
Trouble-Shooting
VBScript
Virus
Vista
VS.NET 2003
VS2005
VS2008
Web
Windows 2008
Work
中文編碼
潛盾機
關於作者
一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"
有為的中年人
"自許。
文章典藏
January 2009 (1)
December 2008 (23)
November 2008 (20)
October 2008 (19)
September 2008 (21)
August 2008 (10)
July 2008 (16)
June 2008 (20)
May 2008 (20)
April 2008 (21)
March 2008 (18)
February 2008 (9)
January 2008 (18)
December 2007 (20)
November 2007 (22)
October 2007 (20)
September 2007 (23)
August 2007 (22)
July 2007 (19)
June 2007 (29)
May 2007 (21)
April 2007 (23)
March 2007 (23)
February 2007 (17)
January 2007 (9)
December 2006 (12)
November 2006 (15)
October 2006 (7)
September 2006 (9)
August 2006 (16)
July 2006 (14)
June 2006 (12)
May 2006 (12)
April 2006 (9)
March 2006 (4)
February 2006 (7)
January 2006 (8)
October 2005 (1)
August 2005 (1)
July 2005 (1)
June 2005 (2)
March 2005 (1)
February 2005 (1)
January 2005 (5)
February 2004 (3)
January 2004 (12)
其他功能
這個部落格
Home
Feedjit live traffic feed
Syndication
Comments RSS