此主題闡釋如何使用數(shù)據(jù)集來更新數(shù)據(jù)庫中的數(shù)據(jù)。還可使用 SqlCommand 直接在數(shù)據(jù)庫中插入、更新和刪除數(shù)據(jù),記住這一點很重要。理解從數(shù)據(jù)庫填充數(shù)據(jù)集中涉及的概念將有助于理解當(dāng)前的主題。 “從數(shù)據(jù)庫填充數(shù)據(jù)集”中涉及的一些主題包括從數(shù)據(jù)庫檢索出數(shù)據(jù)并且將其放入數(shù)據(jù)集中,以及數(shù)據(jù)集是如何獨立于且不同于數(shù)據(jù)庫的。一旦加載了 DataSet,就可以修改數(shù)據(jù),并且數(shù)據(jù)集將跟蹤更改。 可 將 DataSet 視為從數(shù)據(jù)庫檢索出的數(shù)據(jù)的內(nèi)存內(nèi)緩存。DataSet 由表、關(guān)系和約束的集合組成。在此示例中,將說明如何在數(shù)據(jù)表 (DataTable) 上使用 Add 方法向數(shù)據(jù)集添加新數(shù)據(jù)。Add 方法使用一列所需的數(shù)據(jù)列或一個數(shù)據(jù)行 (DataRow)。
請注意數(shù)據(jù)表必須通過 NewRow 方法返回數(shù)據(jù)行。該方法返回帶有適當(dāng)?shù)臄?shù)據(jù)表架構(gòu)的數(shù)據(jù)行對象。在將這個新的數(shù)據(jù)行添加到行集合 (RowsCollection) 之前,它是獨于表的。 可通過訪問數(shù)據(jù)行來更改數(shù)據(jù)行中的數(shù)據(jù)??梢允褂眯屑现械男兴饕?,該行索引通過 Rows 屬性來訪問:
還可通過主鍵值來訪問特定行:
此處,“ALFKI”是“Customers”表中主鍵“CustomerID”的值。使用 SqlDataAdapter 時,從數(shù)據(jù)庫建立該鍵。如果不是在通過 PrimaryKey 屬性使用數(shù)據(jù)庫,則也可以對該鍵進行設(shè)置。 使用 Delete 方法來移除行。請注意,數(shù)據(jù)集中發(fā)生的是邏輯刪除,只有將該數(shù)據(jù)集更新到數(shù)據(jù)庫時,才會導(dǎo)致物理刪除。同樣地,可以在數(shù)據(jù)集上使用 RejectChanges,這種情況下將恢復(fù)該行。
行中保留了原值和新值。RowChanging 事件使您能夠同時訪問原值和新值,以決定是否繼續(xù)進行編輯操作。由于保留了原值和新值,因此可以建立開放式鎖定和鍵更改等方案。 在將更改提交回數(shù)據(jù)庫之前,需要設(shè)置 InsertCommand、UpdateCommand 和 DeleteCommand 來協(xié)調(diào)對數(shù)據(jù)庫做出的更改。對于有限的方案,可使用 SqlCommandBuilder 自動生成這些命令,如以下示例中所示:
要將數(shù)據(jù)從數(shù)據(jù)集提交到數(shù)據(jù)庫中,請使用 SqlDataAdapter 上的 Update 方法。
以下示例說明如何使用 SqlDataAdapter 從數(shù)據(jù)庫獲取數(shù)據(jù),在數(shù)據(jù)集中修改數(shù)據(jù),然后通過 SqlDataAdapter 將數(shù)據(jù)提交回數(shù)據(jù)庫。 用CSHARP編寫代碼如下 Code |
|
來自: 旭龍 > 《數(shù)據(jù)庫》