/*把更改寫回資料庫DataAdapter.Update*/

來源:互聯網
上載者:User

 

把更改寫回資料庫DataAdapter.Update
 /**//*把更改寫回資料庫DataAdapter.Update*/
            /**//*Important: 這種在DataTable中進行的插入、更新和刪除並不會自動寫回資料庫 
             */
            SqlDataAdapter adapter = new SqlDataAdapter(strSql, strConn);
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
            DataSet ds = new DataSet();
            adapter.Fill(ds, "Titles");
            
            //插入記錄
            DataTable table = ds.Tables["Titles"];
            DataRow row = table.NewRow();
            row["Title_id"] = "JP1001";
            row["title"] = "programming Microsoft .NET";
            row["price"] = 59.99m;
            row["ytd_sales"] = 100000;
            row["type"] = "business";
            row["pubdate"] = new DateTime(2002, 5, 1);
            table.Rows.Add(row);
            //更新資料庫
            adapter.Update(table);
            
            /**//*DataAdapter的Update方法檢查傳遞給表的每一條記錄,把自從上次更新
             * (或自從上次調用table的AcceptChanges方法後)被插入、更新或刪除的行
             * 寫回資料庫。如果DataSet中包含了多個被修改的DataTable,就把整個DataSet
             * 傳給Update方法: adapter.Update(ds),所有改變會被一次性寫回。
             */
            /**//*
             * 哦,還有許多示範DataAdapter.Update的用法的樣本,示範了通過調用名為GetChanges
             * 的方法建立一個只含有被插入、更新或刪除行的新的臨時DataSet或者DataTable
             * ,然後把delta傳遞給DataAdapter.Update,如下:
             * //更新資料庫
             * DataTable delta = table.GetChanges();
             * adapter.Update(delta);
             * 這種方法的確好用,但不是必需的。Update會忽略包含已修改和未修改的行的DataTable中
             * 未被修改的行。
             * 當要控制寫回資料庫中的更改的內容的順序時,GetChanges方法發揮作用,
             * 如果想在Insert前面執行Delete,以避免主鍵重複錯誤,應該這樣做: 
             */
            //DataRowState ---->enum System.Data.DataRowState
            //DataRowState.Deleted---->the row was deleted 
            //                        using the row.Delete()
            DataTable deletes = table.GetChanges(DataRowState.Deleted);
            adapter.Update(deletes);
            DataTable inserts = table.GetChanges(DataRowState.Added);
            adapter.Update(inserts);
            /**//*GetChanges的另一個用處是,
             * 當更新不是在本地執行時,把機器間的資料轉送量減到最小,
             * 只傳遞被改變的DataSet或DataTable比傳遞整個DataSet或DataTable更高效              
             */

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.