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

C#高級編程:調用存儲過程[1]

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

    用一個命令對象調用存儲過程就是定義存儲過程的名稱給過程的每個參數添加參數定義然後用上一節中給出的方法執行命令

    為了使本節的示例更有說服力下面定義一組可以用於插入更新和刪除Northwind示例數據庫中Region表的記錄的存儲過程這個表盡管很小但可以用於給每種常見的存儲過程編寫示例

    調用沒有返回值的存儲過程

    調用存儲過程的最簡單示例是不給調用者返回任何值下面定義了兩個這樣的存儲過程一個用於更新現有的Region記錄另一個用於刪除指定的Region記錄

    () 記錄的更新
    更新Region記錄是很簡單的因為(假定主鍵碼不能被更新)只有一個列可以更新直接在SQL Server查詢分析器中鍵入這些示例或者運行本章下載代碼中的StoredProcssql文件在該文件中包含本節中的所有存儲過程

    CREATE PROCEDURE RegionUpdate (@RegionID INTEGER@RegionDescription NCHAR()) AS
       SET NOCOUNT OFF
       UPDATE Region
          SET RegionDescription = @RegionDescription
          WHERE RegionID = @RegionID
    GO

    給真實世界中的表執行更新命令需要重復選擇和返回已更新的記錄這個存儲過程有兩個輸入參數(@RegionID和@RegionDescription)對數據庫執行UPDATE語句

    要在NET代碼中運行這個存儲過程需要定義一個SQL命令並執行它
    SqlCommand aCommand = new SqlCommand(RegionUpdate conn);
    aCommandCommandType = CommandTypeStoredProcedure;
    aCommandParametersAdd(new SqlParameter (@RegionIDSqlDbTypeIntRegionID));
    aCommandParametersAdd(new SqlParameter(@RegionDescriptionSqlDbTypeNCharRegionDescription));
    aCommandUpdatedRowSource = UpdateRowSourceNone;

    這段代碼創建了一個新SqlCommand對象aCommand並把它定義為一個存儲過程然後依次添加每個參數最後把存儲過程的結果設置為UpdateRowSource枚舉中的一個值

    該存儲過程有兩個參數要更新的Region記錄的惟一主鍵碼給這個記錄的新描述創建好命令後就可以用下面的命令執行它
    aCommandParameters[]Value = ;
    aCommandParameters[]Value = South Western England;
    aCommandExecuteNonQuery();

    這幾個命令設置了每個參數的值然後執行存儲過程該過程沒有返回值因此使用ExecuteNonQuery就足夠了命令參數可以像前面那樣依次設置或者按照名稱來設置

    () 記錄的刪除
    下一個存儲過程可用於從數據庫中刪除一個Region記錄
    CREATE PROCEDURE RegionDelete (@RegionID INTEGER) AS
       SET NOCOUNT OFF
       DELETE FROM Region
       WHERE       RegionID = @RegionID
    GO

    這個過程只需要該記錄的主鍵碼值下面的代碼使用SqlCommand對象調用這個存儲過程
    SqlCommand aCommand = new SqlCommand(RegionDelete conn);
    aCommandCommandType = CommandTypeStoredProcedure;
    aCommandParametersAdd(new SqlParameter(@RegionID SqlDbTypeInt RegionID));
    aCommandUpdatedRowSource = UpdateRowSourceNone;

    這個命令只接收一個參數如下面的代碼所示它執行RegionDelete存儲過程這是一個按照名稱設置參數的示例
    aCommandParameters[@RegionID]Value= ;
    aCommandExecuteNonQuery();

[]  []  


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