使用DataAdapter更新資料來源

2022-02-25 09:51:30 字數 2351 閱讀 4136

sqldataadapter dataadpater = new sqldataadapter(

"select categoryid, categoryname from categories", connection);

dataadpater.updatecommand = new sqlcommand(

"update categories set categoryname = @categoryname " +

"where categoryid = @categoryid" , connection);

dataadpater.updatecommand.parameters.add(

"@categoryname", sqldbtype.nvarchar, 15, "categoryname");

sqlparameter parameter = dataadpater.updatecommand.parameters.add(

"@categoryid", sqldbtype.int);

parameter.sourcecolumn = "categoryid";

parameter.sourceversion = datarowversion.original;

dataset dataset = new dataset();

dataadpater.fill(dataset, "categories");  

datarow row = dataset.tables["categories"].rows[0];

row ["categoryname"] = "new category";

dataadpater.update(dataset, "categories");

dataadapter的 update 方法可調用來將dataset中的更改解析回資料來源。與 fill 方法類似,update 方法將 dataset 的例項和可選的datatable物件或 datatable 名稱用作引數。dataset 例項是包含已作出的更改的 dataset,而 datatable 標識從其中檢索更改的表。

當呼叫 update 方法時,dataadapter 將分析已作出的更改並執行相應的命令(insert、update 或 delete)。當 dataadapter 遇到對datarow的更改時,它將使用 insertcommand、updatecommand 或 deletecommand 來處理該更改。這樣,您就可以通過在設計時指定命令語法並在可能時通過使用儲存過程來盡量提高 ado.net 應用程式的效能。在呼叫 update 之前,必須顯式設定這些命令。如果呼叫了

update 但不存在用於特定更新的相應命令(例如,不存在用於已刪除行的 deletecommand),則將引發異常。

command 引數可用於為 dataset 中每個已修改行的 sql 語句或儲存過程指定輸入和輸出值。有關更多資訊,請參見將引數用於 dataadapter

如果 datatable 對映到單個資料庫表或從單個資料庫表生成,則可以利用dbcommandbuilder物件自動生成 dataadapter 的 deletecommand、insertcommand 和 updatecommand。有關更多資訊,請參見自動生成命令

update 方法會將更改解析回資料來源;但是自上次填充 dataset 以來,其他客戶端可能已修改了資料來源中的資料。若要使用當前資料重新整理 dataset,請使用 dataadapter 和 fill 方法。新行將新增到該表中,更新的資訊將併入現有行。fill 方法通過檢查 dataset 中行的主鍵值及 selectcommand 返回的行來確定是要新增乙個新行還是更新現有行。如果 fill 方法發現 dataset 中某行的主鍵值與 selectcommand 返回結果中某行的主鍵值相匹配,則它將用

selectcommand 返回的行中的資訊更新現有行,並將現有行的rowstate設定為 unchanged。如果 selectcommand 返回的行所具有的主鍵值與 dataset 中行的任何主鍵值都不匹配,則 fill 方法將新增 rowstate

為 unchanged 的新行。

使用DataAdapter更新資料來源

sqldataadapter dataadpater new sqldataadapter select categoryid,categoryname from categories connection dataadpater.updatecommand new sqlcommand updat...

DataAdapter更新資料庫要點

1 給要更新的資料表定義主鍵。2.如果dataset有刪除資料行的操作,最好使用 datarow.delete dataset.acceptchange 而不是datatable.rows.remove datarow 3.更新之前 sqldataadapter da new sqldataadap...

深入理解DataAdapter(一)

ado.net有兩個核心元件 基於連線的data provider元件以及基於非連線的dataset元件。基於連線的data provider元件常用於實時地從資料庫中檢索資料。而基於非連線的dataset,似乎與資料庫沒有直接聯絡,僅僅用於在本地記憶體中儲存data provider提供的資料表或...