??????唉,只怪自己學術不精,現(xiàn)在才學習SQL存儲過程,從網(wǎng)上找了不少資料,可是很凌亂,定位也比較高,不適合我這樣的小菜學習,現(xiàn)在我就來總結一下C#使用SQL存儲過程完整的流程,以SQL2005為例。
??????先簡單的說說什么是存儲過程:存儲過程就是固化在SQL數(shù)據(jù)庫系統(tǒng)內部的SQL語句,這樣做的好處是可以提高執(zhí)行效率、提高數(shù)據(jù)庫的安全性、減少網(wǎng)絡流量。接下來就講解如何在數(shù)據(jù)庫中建立一個存儲過程。
??????打開SQL2055數(shù)據(jù)庫,展開“數(shù)據(jù)庫”節(jié)點,找到你使用的數(shù)據(jù)庫(目的數(shù)據(jù)庫),展開該數(shù)據(jù)庫節(jié)點,找到“可編程性”節(jié)點并展開,就可以看到“存儲過程”了,在“存儲過程”上點擊右鍵,新建存儲過程。然后會彈出查詢分析器,在這輸入創(chuàng)建代碼就可以了。
??????代碼如下:
create proc myinsert -- 創(chuàng)建一個存儲過程,名稱為myinsert --這里寫參數(shù),如果有的話;沒有的話就空著 as --這里寫具體語句,可以寫N個 go--可加可不加,go的意思是另起一頁,相當于下一個功能塊。如果下邊不寫語句,可以不加!
例如:
create proc myinsert @username varchar(10),--注意這里的逗號,多個參數(shù)用逗號隔開 @password varchar(10), @name varchar(10), @usertype varchar(10), @createpeople varchar(10) as insert into SystemUsers(UserName,PassWord,Name,UserType,CreatPeople)values(@username,@password,@name,@usertype,@createpeople) go
這個存儲過程可以向SystemUsers表中插入一條記錄。
????? 以上講的是手動建立存儲過程的方法,其實完全不必這么麻煩,直接點擊SQL2005左上角的“新建查詢”,打開查詢分析器,然后在上邊的語句中加入一句話:“use JF_Charging_System”意思就是使用某個數(shù)據(jù)庫,也就是在哪個數(shù)據(jù)庫中建立存儲過程。
例如:
use JF_Charging_System go create proc myinsert @username varchar(10), @password varchar(10), @name varchar(10), @usertype varchar(10), @createpeople varchar(10) as insert into SystemUsers(UserName,PassWord,Name,UserType,CreatPeople)values(@username,@password,@name,@usertype,@createpeople) go
?????
下面再來講解如何在C#中調用存儲過程。廢話不過說,一段完整的代碼+注釋讓你明白一切!這段C#代碼和上邊的存儲過程是完全對應的。
string strsql = "Data Source=192.168.24.53;Initial Catalog=JF_Charging_System;Persist Security Info=True;User ID=sa;Password=1";//數(shù)據(jù)庫鏈接字符串 string sql = "myinsert";//要調用的存儲過程名 SqlConnection conStr = new SqlConnection(strsql);//SQL數(shù)據(jù)庫連接對象,以數(shù)據(jù)庫鏈接字符串為參數(shù) SqlCommand comStr = new SqlCommand(sql, conStr);//SQL語句執(zhí)行對象,第一個參數(shù)是要執(zhí)行的語句,第二個是數(shù)據(jù)庫連接對象 comStr.CommandType = CommandType.StoredProcedure;//因為要使用的是存儲過程,所以設置執(zhí)行類型為存儲過程 //依次設定存儲過程的參數(shù) comStr.Parameters.Add("@username", SqlDbType.VarChar, 10).Value = "11"; comStr.Parameters.Add("@password", SqlDbType.VarChar, 10).Value = "11"; comStr.Parameters.Add("@name", SqlDbType.VarChar, 10).Value = "11"; comStr.Parameters.Add("@usertype", SqlDbType.VarChar, 10).Value = "11"; comStr.Parameters.Add("@createpeople", SqlDbType.VarChar, 10).Value = "11"; conStr.Open();//打開數(shù)據(jù)庫連接 MessageBox.Show(comStr.ExecuteNonQuery().ToString());//執(zhí)行存儲過程 conStr.Close();//關閉連接
????? 希望對大家有所幫助!
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
