熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#高級編程:通過數據適配器進行更新[1]

2013-11-13 11:05:35  來源: .NET編程 
    ——此文章摘自《C#高級編程(第版)》定價元 特價元 購買

    除了SqlDataAdapter最有可能包含的 SelectCommand之外還可以定義InsertCommand UpdateCommand 和 DeleteCommand顧名思義這些對象都是適用於相應提供程序的命令對象(例如SqlCommand 或 OleDbCommand)實例

    有了這種靈活性後就可以自由調整應用程序對頻繁使用的命令(例如select和insert)采用合適的存儲過程來執行對不常使用的命令(例如delete)采用SQL命令的方式執行一般應為所有的數據庫交互操作提供存儲過程因為這會更快更容易調整

    本節的示例重新使用調用存儲過程一節中的存儲過程插入更新和刪除Region記錄再把這些與上面編寫的RegionSelect過程結合起來生成一個新示例這個示例使用這些命令來檢索和更新DataSet中的代碼代碼的主體如下所示

    插入一個新行

    把新行添加到DataTable中有兩種方式第一種方式是調用NewRow()函數返回一個空行然後向其填充數據最後把它添加到Rows集合中
    DataRow r = dsTables[Region]NewRow();
    r[RegionID]=;
    r[RegionDescription]=North West;
    dsTables[Region]RowsAdd(r);

    第二種方式是把一組數據傳送給RowsAdd()方法
    DataRow r = dsTables[Region]RowsAdd
                 (new object [] { North West });

    DataTable中的每個新行都把自己的RowState設置為Added在對數據庫進行修改前這個示例先把記錄清空然後把下面的行添加到DataTable中(以任何一種方式)注意右邊一列顯示行的狀態
    New row pending inserting into database
         Eastern                                            Unchanged
         Western                                           Unchanged
         Northern                                           Unchanged
         Southern                                          Unchanged
      North West                                     Added

    要在DataAdapter中更新數據庫調用Update方法
    daUpdate(ds Region);

    對於DataTable中的每一新行這將執行存儲過程(在本例中是RegionInsert)然後再次把DataTable中的記錄清空查看對數據庫進行的修改
    New row updated and new RegionID assigned by database
         Eastern                                            Unchanged
         Western                                           Unchanged
         Northern                                           Unchanged
         Southern                                          Unchanged
         North West                                       Unchanged

    看看DataTable中的最後一行把代碼中的RegionID設置為但在執行RegionInsert存儲過程後該值改為這是本例的目的—— 數據庫會生成主鍵碼並且更新DataTable中的數據DataTable中的數據更新是因為源代碼中的SqlCommand定義會把UpdatedRowSource屬性設置為UpdateRowSourceOutputParameters
    SqlCommand aCommand = new SqlCommand(RegionInsert conn);       
    aCommandCommandType = CommandTypeStoredProcedure;
    aCommandParametersAdd(new SqlParameter(@RegionDescription
                                SqlDbTypeNChar
                               
                                RegionDescription));
    aCommandParametersAdd(new SqlParameter(@RegionID
                                SqlDbTypeInt
                               
                                ParameterDirectionOutput
                                false

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15149.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.