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

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