DataAdapter是如何更新數據庫數據的?
2024-07-21 02:23:14
供稿:網友
最近剛改完一個以前做的mis,用戶的要求真是越來越刁鉆了,總算是完事了.又可以操練vb.net了!!!
在ado.net對象模型中, dataadapter對象的功能真是讓人感到欣喜!
dataadapter對象不僅只是捕獲數據的功能,事實上它還可以幫助你將更新后的dataset以批次的方式再寫回后臺數據庫,而且還相當簡單,只要調入update方法,并傳入準備更新的dataset及datatable即可。
那么dataadapter是如何將改動數據寫回數據庫的呢?
了解數據庫處理原理的程序人員可能會感到不可思議,我們在創建dataadapter時只給予了"select"sql命令,未曾在dataadapter設置"insert"、"update"、"delete"等sql命令。這個過程是如何實現的呢?
我們知道dataadapter對象本身就有幾個屬性:selectcommand、insertcommand、updatecommand、deletecommand。當程序調用到dataadapter對象的update方法時,它會根據dataset內的數據所更改的狀況分別應用于insertcommand、updatecommand、deletecommand屬性的command命令寫回數據庫。
問題又來了,如何生成insertcommand、updatecommand、deletecommand屬性及使其能對應到selectcommand的命令正確的寫回呢?
答案有兩個:
1、利用visual studio.net的設計工具生成。如下圖示:
2、通過commandbuilder類。
如果自行編寫代碼創建dataadapter對象的話,insertcommand等屬性就不會自動創建,此時可以通過commandbuilder類的功能來協助你生成insertcommand等屬性。commandbuilder提供自動生成單一表命令的方法,它將會調解dataset對后臺數據庫的記錄更新。
如下辦法:
'更新第一條記錄的"型號"字段為"mf14"
ds.tables("機械表").row(0)("型號")="mf14"
'創建commandbuilder,并傳入dataadapter構造函數參數
dim combuilder as new sqlcommandbuilder(da_yb)
'調用dataadapter的update方法,寫回數據
da_yb.update(ds_yb.tables("機械表"))