999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

B/S模式下調用存儲過程的改進方法

2013-06-25 08:45:14陳星豪
中國信息化·學術版 2013年3期

陳星豪

【摘 要】B/S系統中調用存儲過程能減少網絡通信量,執行速度更快且具有更強的適應性,合理使用存儲過程對B/S系統構建具有重要的優化作用。傳統的調用方法不僅速度慢,而且代碼會隨著存儲過程的增多不斷膨脹,難以維護。本文提出了一種新的方法,在原有調用方法的基礎上進行改進,在一定程度上解決了這些問題。

【關鍵詞】B/S模式;存儲過程;SQL數據庫;

【中圖分類號】TP391.13 【文獻標識碼】A 【文章編號】1672-5158(2013)03-0089-01

0 引言

根據返回值類型的不同,我們可以將存儲過程分為三類:返回記錄集的存儲過程,返回數值的存儲過程(也可以稱為標量存儲過程),以及行為存儲過程。顧名思義,返回記錄集的存儲過程的執行結果是一個記錄集,典型的例子是從數據庫中檢索出符合某一個或幾個條件的記錄[2];返回數值的存儲過程執行完以后返回一個值,例如在數據庫中執行一個有返回值的函數或命令[3];最后,行為存儲過程僅僅是用來實現數據庫的某個功能,而沒有返回值,例如在數據庫中的更新和刪除操作。

1兩種不同的存儲過程調用方法

為了突出新方法的優點,首先介紹一下在.NET中調用存儲過程的傳統方法。另外,本文的所有示例程序均工作于SqlServer數據庫上,其它情況類似,以后不再一一說明。本文所有例子均采用C#語言。

要在應用程序中訪問數據庫,一般性的步驟是:首先聲明一個數據庫連接SqlConnection,然后聲明一個數據庫命令SqlCommand,用來執行SQL語句和存儲過程。有了這兩個對象后,就可以根據自己的需要采用不同的執行方式達到目的。需要補充的是,不要忘記在頁面上添加如下的引用語句:using System.Data.SqlClient。

就執行存儲過程來說,如果執行的是第一類存儲過程,那么就要用一個DataAdapter將結果填充到一個DataSet中,然后就可以使用數據網格控件將結果呈現在頁面上了;如果執行的是第二和第三種存儲過程,則不需要此過程,只需要根據特定的返回判定操作是否成功完成即可。

(1)執行一個沒有參數的存儲過程的代碼如下:

SqlConnection conn=new SqlConnection(“connectionString”);

SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = new SqlCommand();

da.SelectCommand.Connection = conn;

da.SelectCommand.CommandText = "NameOfProcedure";

da.SelectCommand.CommandType = CommandType.StoredProcedure;

然后只要選擇適當的方式執行此處過程,用于不同的目的即可。

(2)執行一個有參數的存儲過程的代碼如下(我們可以將調用存儲過程的函數聲明為

ExeProcedure(string inputdate)):

SqlConnection conn=new SqlConnection(“connectionString”);

SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = new SqlCommand();

da.SelectCommand.Connection = conn;

da.SelectCommand.CommandText = "NameOfProcedure";

da.SelectCommand.CommandType = CommandType.StoredProcedure;

(以上代碼相同,以下為要添加的代碼)

param = new SqlParameter("@ParameterName",SqlDbType.DateTime);

param.Direction = ParameterDirection.Input;

param.Value = Convert.ToDateTime(inputdate);

da.SelectCommand.Parameters.Add(param);

這樣就添加了一個輸入參數。若需要添加輸出參數:

param = new SqlParameter("@ParameterName",SqlDbType.DateTime);

param.Direction = ParameterDirection.Output;

param.Value = Convert.ToDateTime(inputdate);

da.SelectCommand.Parameters.Add(param);

若要獲得參儲過程的返回值:

param = new SqlParameter("@ParameterName",SqlDbType.DateTime);

param.Direction = ParameterDirection.ReturnValue;

param.Value = Convert.ToDateTime(inputdate);

da.SelectCommand.Parameters.Add(param);

從上面的代碼我們可以看出,當存儲過程比較多或者存儲過程的參數比較多時,這種方法會大大影響開發的速度;另外一方面,如果項目比較大,那么這些用于數據庫邏輯的函數在以后的維護中也是一個很大的負擔。

想到在執行沒有參數的存儲過程時只需要傳入一個存儲過程的名字就可以調用相應的存儲過程,而且在SqlServer數據庫中我們可以直接在查詢分析器中敲入“存儲過程名(參數列表)”樣的字符串就可以執行存儲過程,于是在編譯器中鍵入相應代碼。這些代碼是在調用不帶參數的存儲過程的代碼的基礎上改的。具體代碼如下:

SqlConnection conn=new SqlConnection(“connectionString”);

SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = new SqlCommand();

da.SelectCommand.Connection = conn;

da.SelectCommand.CommandText = "NameOfProcedure( para1,para2,para3)";

da.SelectCommand.CommandType = CommandType.StoredProcedure;

為了使代碼更具有代表性,要調用的存儲過程的第一個和第二個參數都為字符串類型,第三個參數為整型。

2兩種調用方法的比較

第二種方法具有一個很明顯的優點,即可以提高開發速度,節省開發時間,代碼容易維護,在一定程度上也減少了系統大小。可以讓開發人員少寫很大一部分的代碼。如果不需要獲取輸出參數和返回值,那么幾乎可以做到“一勞永逸”。因此在實際的程序開發中,這種方法還是具有一定的實用價值的。

3結束語

本文在傳統存儲過程調用方法的基礎上,提出了一種改進的調用方法,并用C#語言實現其過程,通過實驗分析,結果表明,改進的調用方法,在一定程度上解決了速度慢、難以維護的缺點。

參考文獻:

[1]李曼,王琰,趙益宇,等.基于基于關系數據庫的大規模的存儲模式研究[J].華中科技大學學報(自然科學版),2005,33(增刊):217-220.

[2] 李勇,李躍龍. 基于關系數據庫存儲OWL本體的方法研究[J].計算機工程與科學,2008,30(7):105-107.

主站蜘蛛池模板: 成人亚洲视频| 最新国产精品第1页| 精品福利视频网| 国产视频只有无码精品| 国产成人综合久久精品下载| 中文字幕在线欧美| 欧美不卡视频在线观看| 国产午夜在线观看视频| 网友自拍视频精品区| 色天天综合| 国产毛片高清一级国语| 强奷白丝美女在线观看| 亚洲欧美人成人让影院| 九九热在线视频| 久久影院一区二区h| 欧美一区精品| 国产永久无码观看在线| 99无码中文字幕视频| 亚洲av无码久久无遮挡| 54pao国产成人免费视频 | 国产成人三级| 亚洲性视频网站| 国产网站黄| 又黄又爽视频好爽视频| 久久亚洲国产视频| 乱系列中文字幕在线视频 | 99久久精品美女高潮喷水| 18黑白丝水手服自慰喷水网站| 国产麻豆精品久久一二三| 在线综合亚洲欧美网站| 国产产在线精品亚洲aavv| 国产午夜在线观看视频| 色综合综合网| 亚洲大尺码专区影院| 久草国产在线观看| 亚洲动漫h| 老色鬼欧美精品| 午夜国产精品视频| 色婷婷亚洲综合五月| 久久成人国产精品免费软件| 色综合中文综合网| 免费va国产在线观看| 少妇极品熟妇人妻专区视频| 欧美成人午夜影院| 国产日本欧美在线观看| 久久精品这里只有国产中文精品| 天天色综合4| 欧美日韩国产在线观看一区二区三区| 欧美成人二区| 日本欧美视频在线观看| 中文成人无码国产亚洲| 久久久久无码国产精品不卡| 国产精品短篇二区| 国产精品无码AⅤ在线观看播放| 国内精品视频区在线2021| 在线中文字幕日韩| 亚洲精品视频免费看| 无码 在线 在线| 无码aaa视频| 黄网站欧美内射| 亚洲第一成年网| 亚洲国产精品无码久久一线| av在线手机播放| 色135综合网| 久久先锋资源| 成年人视频一区二区| 亚洲天堂精品视频| 亚洲av中文无码乱人伦在线r| 免费一级α片在线观看| 鲁鲁鲁爽爽爽在线视频观看| 欧美爱爱网| 不卡国产视频第一页| 2020最新国产精品视频| 亚洲香蕉在线| 99视频全部免费| 久久婷婷六月| 成人一级免费视频| a级毛片毛片免费观看久潮| 全午夜免费一级毛片| 欧美成人A视频| 精品久久久久久久久久久| 欧美区国产区|