大家知道,DataSet保存的數據是位於服務器內存里面的原數據庫的“副本”。所以用DataSet更新數據的過程就是先對“副本”進行更新,然后
在將“原本”更新,按照我的理解就是把“原本”覆蓋掉。具體到過程,首先是要找到需要更新的行,然后賦新值,最后更新原數據庫。
要找到需要修改的行,比較方便的做法就是根據記錄中的某個值進行查找,這樣比用“列號”“行號”什么的方便多了。要做到這一點,首先就是要
給數據庫指定一個主鍵,然后即可按照主鍵進行查找。要注意的是這個主鍵必須要是在程序中指定的,並且這個主鍵不一定和你數據庫原來有的主
鍵一樣。
然后就是最后的更新,當然是用DataAdapter的Update()方法借助CommandBuilder來實現,要注意的是,如果你的數據庫一開始沒有定義
主鍵,那進行更新的時候會出錯,返回的錯誤將是“對於不返回任何鍵列信息的 SelectCommand 不支持 UpdateCommand 的動態 SQL
生成。”這是因為我們用的Update()實際上是通過CommandBuilder動態生成sql語句,然后才進行的數據庫操作。但如果你在一開始創建
DataAdapter時的那個sql語句沒有包含有主鍵的列的話,那CommandBuilder將不會發生作用。這一點是必須要牢記的。