C調用存儲過程簡單完整例子_第1頁
C調用存儲過程簡單完整例子_第2頁
C調用存儲過程簡單完整例子_第3頁
C調用存儲過程簡單完整例子_第4頁
C調用存儲過程簡單完整例子_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C#調用存儲過程簡單完整例子     創(chuàng)建存儲過程Create Proc dbo.存儲過程名存儲過程參數(shù)AS執(zhí)行語句RETURN執(zhí)行存儲過程GODECLARE iRet INT, PKDisp VARCHAR(20)SET iRet = '1'Select iRet =CASEWHEN PKDisp = '一' THEN 1WHEN PKDisp = '二' THEN 2WHEN PKDisp = '三' THEN 3WHEN PKDisp = '四' THEN 4WHEN

2、PKDisp = '五' THEN 5ELSE 100ENDDECLARE i INTSET i = 1WHILE i<10 BEGINset i=i+1PRINT iENDDECLARE d INTset d = 1IF d = 1 BEGIN- 打印PRINT '正確'ENDELSE BEGINPRINT '錯誤'END CREATE PROC P_TESTName VARCHAR(20),Rowcount INT OUTPUTASBEGIN SELECT * FROM T_Customer WHERE N

3、AME=Name SET  Rowcount=ROWCOUNTENDGO-存儲過程調用如下:-DECLARE i INTEXEC P_TEST 'A',i OUTPUTSELECT i-結果/*Name       Address    Tel                  - - -&#

4、160;A          Address    Telphone(所影響的行數(shù)為 1 行)            - 1(所影響的行數(shù)為 1 行)*/-DotNet 部分(C#)-WebConfig 文件:-. </system.web>    <!- 數(shù)據(jù)庫連接字符串 

5、60; -> <appSettings>      <add key="ConnectString" value="server=(local);User ID=sa;Password=;database=Test" /></appSettings>   </configuration>-C#代碼:(用到兩個測試控件,DataGrid1(用于顯示綁定結果集合),Lable(用于顯示存儲過程返回單值)-/添加數(shù)據(jù)庫

6、引用using System.Data.SqlClient;. private void Page_Load(object sender, System.EventArgs e)     / 在此處放置用戶代碼以初始化頁面   String DBConnStr;   DataSet MyDataSet=new DataSet();   System.Data.SqlClient.SqlDataAdapter DataAdapter=new Sys

7、tem.Data.SqlClient.SqlDataAdapter();   DBConnStr=System.Configuration.ConfigurationSettings.AppSettings"ConnectString"   System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(DBConnStr);   if (myConnection.St

8、ate!=ConnectionState.Open)        myConnection.Open();         System.Data.SqlClient.SqlCommand myCommand = new System.Data.SqlClient.SqlCommand("P_Test",myConnection);   myCommand.CommandTy

9、pe=CommandType.StoredProcedure;   /添加輸入查詢參數(shù)、賦予值   myCommand.Parameters.Add("Name",SqlDbType.VarChar);   myCommand.Parameters"Name".Value ="A"   /添加輸出參數(shù)   myCommand.Parameters.Add("Rowcount&q

10、uot;,SqlDbType.Int);   myCommand.Parameters"Rowcount".Direction=ParameterDirection.Output;   myCommand.ExecuteNonQuery();   DataAdapter.SelectCommand = myCommand;   if (MyDataSet!=null)       

11、60;DataAdapter.Fill(MyDataSet,"table");         DataGrid1.DataSource=MyDataSet;   DataGrid1.DataBind();   /得到存儲過程輸出參數(shù)   Label1.Text=myCommand.Parameters"Rowcount".Value.ToString(); 

12、0; if (myConnection.State = ConnectionState.Open)       myConnection.Close();     -運行以上代碼即可(返回記錄集合和存儲過程返回值)一、簡介:存儲過程(Stored Procedure), 是一組為了完成特定功能的SQL 語句,集經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名字并給出參數(shù),如果該存儲過程帶有參數(shù)來執(zhí)行它,在SQL Server 的系列版本中,存儲過

13、程分為兩類:系統(tǒng)提供的存儲過程和用戶自定義存儲過程。系統(tǒng)SP,主要存儲 master 數(shù)據(jù)庫中,并以sp_為前綴并且系統(tǒng)存儲過程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server。 用戶自定義存儲過程是由用戶創(chuàng)建,并能完成某一特定功能,如:查詢用戶所需數(shù)據(jù)信息的存儲過程。存儲過程具有以下優(yōu)點:?1.存儲過程允許標準組件式編程(模塊化設計)存儲過程在被創(chuàng)建以后,可以在程序中被多次調用,而不必重新編寫該存儲過程的SQL語句,而且數(shù)據(jù)庫專業(yè)人員可隨時對存儲過程進行修改,但對應用程序源代碼毫無影響。因為應用程序源代碼只包含存儲過程的調用語句,從而極大地提高了程序的可移植性。2

14、.存儲過程能夠實現(xiàn)快速的執(zhí)行速度如果某一操作包含大量的Transaction-SQL 代碼,,或分別被多次執(zhí)行,那么存儲過程要比批處理的執(zhí)行速度快很多,因為存儲過程是預編譯的,在首次運行一個存儲過程時,查詢優(yōu)化器對其進行分析優(yōu)化,并給出最終被存在系統(tǒng)表中的執(zhí)行計劃,而批處理的Transaction-SQL 語句在每次運行時都要進行編譯和優(yōu)化,因此速度相對要慢一些。3.存儲過程能夠減少網(wǎng)絡流量對于同一個針對數(shù)據(jù)數(shù)據(jù)庫對象的操作,如查詢修改,如果這一操作所涉及到的 Transaction-SQL語句被組織成一存儲過程,那么當在客戶計算機上調用該存儲過程時,網(wǎng)絡中傳送的只是該調用

15、語句,否則將是多條SQL 語句從而大大增加了網(wǎng)絡流量降低網(wǎng)絡負載。4.存儲過程可被作為一種安全機制來充分利用系統(tǒng)管理員通過,對執(zhí)行某一存儲過程的權限進行限制,從而能夠實現(xiàn)對相應的數(shù)據(jù)訪問權限的限制。二、變量I三、流程控制語句(if else | select case | while )Select . CASE 實例DECLARE iRet INT, PKDisp VARCHAR(20)SET iRet = '1'Select iRet =CASEWHEN PKDisp = '一' THEN 1WHEN PKDisp = '二' TH

16、EN 2WHEN PKDisp = '三' THEN 3WHEN PKDisp = '四' THEN 4WHEN PKDisp = '五' THEN 5ELSE 100END四、存儲過程格式創(chuàng)建存儲過程Create Proc dbo.存儲過程名存儲過程參數(shù)AS執(zhí)行語句RETURN執(zhí)行存儲過程GO理論知識:結束語法示例:開始- 變量的聲明,sql里面聲明變量時必須在變量前加符號DECLARE I INT- 變量的賦值,變量賦值時變量前必須加setSET I = 30- 聲明多個變量DECLARE s varchar(10),a INT- 

17、Sql 里if語句IF 條件 BEGIN執(zhí)行語句ENDELSE BEGIN執(zhí)行語句ENDDECLARE d INTset d = 1IF d = 1 BEGIN- 打印PRINT '正確'ENDELSE BEGINPRINT '錯誤'END- Sql 里的多條件選擇語句.DECLARE iRet INT, PKDisp VARCHAR(20)SET iRet = 1Select iRet =CASEWHEN PKDisp = '一' THEN 1WHEN PKDisp = '二' THEN 2WHEN

18、 PKDisp = '三' THEN 3WHEN PKDisp = '四' THEN 4WHEN PKDisp = '五' THEN 5ELSE 100END- 循環(huán)語句WHILE 條件 BEGIN 執(zhí)行語句ENDDECLARE i INTSET i = 1WHILE i<1000000 BEGINset i=i+1END- 打印PRINT i語法示例:結束相關說明:開始?- TRUNCATE 刪除表中的所有行,而不記錄單個行刪除操作,不能帶條件TRUNCATE TABLE 在功能上與不帶 Where 子句的 Delete 語句相

19、同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 Delete 速度快,且使用的系統(tǒng)和事務日志資源少。Delete 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務日志中記錄頁的釋放。TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數(shù)值重置為該列的種子。如果想保留標識計數(shù)值,請改用 Delete。如果要刪除表定義及其數(shù)據(jù),請使用 Drop TABLE 語句。對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TA

20、BLE,而應使用不帶 Where 子句的Delete 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發(fā)器。TRUNCATE TABLE 不能用于參與了索引視圖的表。示例下例刪除 authors 表中的所有數(shù)據(jù)。TRUNCATE TABLE authors- Select INTO 從一個查詢的計算結果中創(chuàng)建一個新表。 數(shù)據(jù)并不返回給客戶端,這一點和普通的- Select 不同。 新表的字段具有和 Select 的輸出字段相關聯(lián)(相同)的名字和數(shù)據(jù)類型。select * into NewTablefrom Uname- Insert INTO Select- 表ABC必須存在- 把表Unam

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論