1、什么是存儲過程?
  存儲 " /> 欧美一级一区,亚洲另类视频,国产欧美一区二区精品婷

中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

存儲過程在ASP.NET中的應(yīng)用

  今天的主要收獲是研究了存儲過程在ASP.NET中的應(yīng)用。主要包括了兩個(gè)方面:在代碼中通過編程的方式使用存儲過程和在DataSorce控件使用存儲過程。

  第一部分:存儲過程簡要介紹:
  1、什么是存儲過程?
  存儲過程(PROCEDURE),是SQL數(shù)據(jù)庫里面的一個(gè)術(shù)語。通過SQL數(shù)據(jù)庫提供的編程能力,可以將一系列的SQL命令、函數(shù)、編程語句組合起來,連續(xù)執(zhí)行,可以說就是數(shù)據(jù)庫的批命令。

  2、存儲過程的組成:
  存儲過程包括:名稱、參數(shù)、語句體、返回值四部分組成。
  3、存儲過程的簡要語法結(jié)構(gòu)是:

■■■■■■代碼開始■■■■■■
CREATE PROCEDURE [存儲過程的名稱]
[參數(shù)1],[參數(shù)2],.
AS
[語句體]
RETURN [返回值]
■■■■■■代碼結(jié)束■■■■■■

例如:

■■■■■■代碼開始■■■■■■

 

4、存儲過程的用途
4.1、多條語句連續(xù)執(zhí)行。
有一些連續(xù)而且固定的操作,可以封裝成一個(gè)存儲過程,為工作提供方便。
4.2、多個(gè)操作合并
應(yīng)用程序中使用數(shù)據(jù)庫,有時(shí)候會遇到一定的限制,最常見的就是,在某個(gè)位置,只允許執(zhí)行一條語句。在這種情況下,有時(shí)候偏偏要連續(xù)完成多個(gè)操作。比如說上面的范例,程序要求同時(shí)修改兩個(gè)表,但是只能執(zhí)行一次修改動作。
4.3、預(yù)定義的流程
觸發(fā)器實(shí)在刪除、更新、插入等操作中觸發(fā)的預(yù)定義動作,觸發(fā)器也可以同時(shí)執(zhí)行多條語句,觸發(fā)器的語句體結(jié)構(gòu)和存儲過程是一樣的。所以有人說觸發(fā)器就是存儲過程的一種特殊應(yīng)用

5、存儲過程和函數(shù)

大多數(shù)情況下存儲過程和函數(shù)都是一樣的。但是也有一些不同。
在SQL SERVER的聯(lián)機(jī)叢書里有詳細(xì)的內(nèi)容,這里列出部分內(nèi)容:

存儲過程與函數(shù)不同,因?yàn)?a href=/pingce/cunchu/ target=_blank class=infotextkey>存儲過程不返回取代其名稱的值,也不能直接用在表達(dá)式中。
 ——聯(lián)機(jī)叢書
函數(shù)中不能使用臨時(shí)表,和動態(tài)SQL
 ——CSDN:http://topic.csdn.NET/t/20051027/17/4354930.html
另外還可以看看這兩篇文章:

http://www.51testing.com/?141432/action_viewspace_itemid_81171.html
http://topic.csdn.NET/t/20051027/17/4354930.html
http://www.cnsdn.com.cn/blog/article.ASP?id=2035
http://hi.baidu.com/kevinliu/blog/item/fc9d57da11c215d9b6fd4800.html

 

第二部分:在代碼中通過編程的方式使用存儲過程
1、基本要求:通過SqlCommand對象執(zhí)行。
        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();
        conn.ConnectionString = this.ConnStr;
        SqlCommand cmd = new SqlCommand();
        conn.Open();
        cmd.Connection = conn;
2、主要步驟:
2.1、指定存儲過程的名稱和command的類型為存儲過程。
        cmd.CommandText = "AddBlogClass";
        cmd.CommandType = CommandType.StoredProcedure;
2.2、添加參數(shù):
        SqlParameter Para1 = new SqlParameter("@ClassName",SqlDbType.NVarChar);
        Para1.Value = TextBoxName.Text;
        cmd.Parameters.Add(Para1);
2.3、執(zhí)行存儲過程
 int result = cmd.ExecuteNonQuery();
3、完整代碼:

Code


第三部分:在DataSorce控件使用存儲過程
1、沒有參數(shù)
對于沒有參數(shù)的存儲過程,直接調(diào)用就可以了。
1.1、配置數(shù)據(jù)源
如果是“配置數(shù)據(jù)源”就要在“自定義語句和存儲過程”中,選擇“存儲過程”那一選項(xiàng),然后在下拉列表中選擇要使用的存儲過程就行了。

 

1.2、屬性面板
如果是通過屬性面板設(shè)置的,就需要下面這兩個(gè)步驟:

A:命令類型中選擇“StoredProcedure”
注:命令類型包括“SelectCommandType”、“UpdateCommandType”等。


B:在命令類型下面相應(yīng)的查詢(例如SelectCommandType對應(yīng)的就是SelectQuery)中,單擊“查詢”框里的按鈕。彈出“命令和參數(shù)編輯器”,在“Select命令”輸入存儲過程的名稱。然后單擊確定。

 

 

2、有參數(shù)
2.1、添加參數(shù)
有參數(shù)的存儲過程,除了要像上面1.1和1.2中那樣添加存儲過程的名稱之外還需要在1.2.B打開的“命令和參數(shù)編輯器”中添加參數(shù)。
可以在“命令和參數(shù)編輯器”的界面上使用“刷新參數(shù)”按鈕,也可以使用下面的“添加參數(shù)”按鈕。

2.2、添加參數(shù)的注意事項(xiàng)

2.2.1
對于Select和Delete命令,不要添加“RETURN_VALUE”參數(shù),如果是全用“刷新參數(shù)”產(chǎn)生的,那就手工刪掉。

2.2.2
對于Delete命令,需要指定參數(shù)源。一般情況下就是“Control”(控件),然后在下面選擇一個(gè)控件(根據(jù)控件名)

2.2.3
對于Update命令,【ConflicDetection】不要使用【CompareAllValues】方式的參數(shù),我測試的情況是在這種模式下,無法更新數(shù)據(jù)。

2.2.4
經(jīng)常出現(xiàn)的錯(cuò)誤“為過程或函數(shù) ### 指定了過多的參數(shù)。”
在我測試的過程有,有如下幾個(gè)原因。
A:對有有參數(shù)的存儲過程添加了存儲過程名稱,沒有添加參數(shù)
B:有多余的“RETURN_VALUE”參數(shù),參見2.2.1
C:如果GridView控件的字段數(shù)量和存儲過程的參數(shù)不一致
D:屬性面板的參數(shù)名和存儲過程的參數(shù)名不一致。

NET技術(shù)存儲過程在ASP.NET中的應(yīng)用,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 91精品中文字幕一区二区三区 | 天天干狠狠干 | 亚洲一区自拍 | 久久不卡 | 喷潮网站 | 亚洲精品性视频 | 国产精品一区二区精品 | 亚洲欧美一区二区三区国产精品 | 国产在线观看av | 亚洲不卡 | 久久人人爽人人爽 | 在线亚洲一区二区 | 亚洲经典一区 | 午夜专区| 国产日韩欧美一区二区 | 最新av中文字幕 | 99爱国产| 凹凸日日摸日日碰夜夜 | 国产精品久久久久aaaa九色 | 国产 91 视频 | 精品国产一区二区国模嫣然 | 粉嫩av久久一区二区三区 | 国产精品爱久久久久久久 | 1区2区视频 | 9191成人精品久久 | 日日操日日干 | 日韩一区二区三区在线 | 国产午夜精品视频 | 国产免费一区二区三区免费视频 | 中文字幕乱码亚洲精品一区 | 国产成人a亚洲精品 | 在线播放国产一区二区三区 | 殴美成人在线视频 | 日韩国产欧美在线观看 | 国产精品1区2区3区 国产在线观看一区 | 精品乱子伦一区二区三区 | 一区二区高清在线观看 | 国产精产国品一二三产区视频 | 亚洲一区二区三区在线视频 | 日韩一区二区福利视频 | 日韩在线电影 |