SqlDataAdapter 不會自動生成實現 DataSet 的更改與關聯的 SQL Server 實例之間的協調所需的 Transact-SQL 語句。但是,如果設置了 SqlDataAdapter 的 SelectCommand 屬性,則可以創建一個 SqlCommandBuilder 對象來自動生成用於單表更新的 Transact-SQL 語句。然後,SqlCommandBuilder 將生成其他任何未設置的 Transact-SQL 語句。
每當設置了 DataAdapter 屬性,SqlCommandBuilder 就將其本身註冊爲 RowUpdating 事件的偵聽器。一次只能將一個 SqlDataAdapter 與一個 SqlCommandBuilder 對象(或相反)互相關聯。
爲了生成 INSERT、UPDATE 或 DELETE 語句,SqlCommandBuilder 會自動使用 SelectCommand 屬性來檢索所需的元數據集。如果在檢索到元數據後(例如在第一次更新後)更改 SelectCommand,則應調用 RefreshSchema 方法來更新元數據。
也就是說 對應每個 adpter 必須 建立一個 SqlCommandBuilder對象,才能執行 adpter.update();
列:
SqlCommandBuilder cb=new SqlCommandbuilder(this.adpter);
adpter.update(ds);