《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 利用SQL Server存儲過程提高在線考試系統的性能
利用SQL Server存儲過程提高在線考試系統的性能
來源:微型機與應用2011年第22期
丁革媛, 宋 揚, 袁中臣, 魏寶武
(沈陽工業大學 工程學院, 遼寧 遼陽111003)
摘要: 利用SQL Server作為數據庫管理平臺開發高校通用計算機在線考試軟件系統時,由于數據量較大,最應關注的是軟件系統的運行速度、性能和可維護性等指標。如果采用常規的程序設計方案,會造成網絡通信數據量大、業務邏輯處理速度慢、系統運行效率低等問題。為解決這些問題,軟件系統中相關業務邏輯設計采用存儲過程的方法實現,大大減少了網絡流量,提高了系統的性能和可維護性。
Abstract:
Key words :

摘  要: 利用SQL Server作為數據庫管理平臺開發高校通用計算機在線考試軟件系統時,由于數據量較大,最應關注的是軟件系統的運行速度、性能和可維護性等指標。如果采用常規的程序設計方案,會造成網絡通信數據量大、業務邏輯處理速度慢、系統運行效率低等問題。為解決這些問題,軟件系統中相關業務邏輯設計采用存儲過程的方法實現,大大減少了網絡流量,提高了系統的性能和可維護性。
關鍵詞: SQL Server; 在線考試; 網絡流量; 存儲過程

    隨著計算機網絡技術和數據庫技術的飛速發展,高校的數字化校園建設進程日益深入,其中數字化教學與學習環境建設成為其核心內容。為推動數字化校園建設進程,創建數字化教學環境,利用Delphi7和SQL Server2000開發出適用于多學科的高校通用計算機在線考試軟件系統。Delphi在基于C/S模式的數據庫應用開發領域具有很強的數據庫支持能力,因為它提供了豐富的數據庫操作組件,常用的有TQuery、TTable、TADOQuery和TADOTable等[1]。通過這些組件,程序員可以在短時間內完成一個應用程序模塊的設計,大大減少了開發人員的工作量。但是,這些組件在操作數據庫時卻存在局限性,即必須將數據庫中的記錄從服務器端取出放入到客戶端,再根據查詢條件進行選擇。這種實現方法,如果待訪問的數據量較大,勢必因為查詢時間較長而降低程序執行的速度,從而降低應用程序的性能。解決這一問題利用了SQL Server2000的存儲過程來實現[2]。
1 存儲過程及其優點
1.1 存儲過程的定義

    存儲過程是存儲在服務器上的一組預先定義并編譯好的用來實現某種特定功能的SQL語句。它可以接受參數、返回狀態值或參數值。存儲過程在服務器端執行,通過應用程序調用的方法實現,執行結束后再把結果返回到客戶端。
1.2 存儲過程的優點
    (1)存儲過程執行速度快,便于提高系統的性能。由于存儲過程在第一次執行之后,其執行規劃就儲存在高速緩沖存儲區中,在以后的操作中。只需從高速緩沖存儲區中調用編譯好的二進制形式存儲過程來執行[3]。
    (2)減少網絡流量,提高系統執行效率??蛻舳藨贸绦蛘{用一個存儲過程,只需通過網絡發送該過程名和少量入口參數,數據庫服務器就可執行該過程,執行完成后,只返回結果狀態或將最終結果集給客戶端應用程序,無需通過網絡傳送大量的SQL操作命令和中間結果,最大限度地減少網絡通信負擔,提高了執行效率。
    (3)維護了數據庫的安全性。如果用戶被授予執行存儲過程的權限,即使該用戶沒有在執行該存儲過程中可參考的表或視圖的訪問權限,該用戶也可以完全執行該存儲過程而不受影響。因此,可以通過創建存儲過程來完成數據的插入、更新和刪除等操作,并且可以通過編程方式控制在操作中對信息的訪問權限[4]。
    (4)提高軟件系統的可維護性。存儲過程在創建時就在服務器上經過調試和編譯,可以避免不必要的錯誤出現。另外,存儲過程將相關業務邏輯封裝在一起,可以大大提高整個軟件系統的可維護性。因為當相關業務邏輯發生變化時,不需要修改并編譯客戶端應用程序,只需要修改位于服務器端的實現相應業務邏輯的存儲過程即可。
    (5)充分增強SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和運算。
    基于以上優點,在進行C/S模式數據庫應用系統開發時,通常把比較浪費時間、影響網絡傳送的相關業務邏輯編寫成存儲過程由服務器執行,同時利用服務器的SQL語法進行優化處理,只將少量的結果顯示在客戶端,充分提高軟件系統的性能[5]。
2 存儲過程的創建方法
     以SQL Server 2000數據庫管理系統為背景,創建方法如下:
    CREATE  PROC[EDURE]
    procedure_name[;number]
           [{@parameter data_type}[VARYING][=default] [OUTPUT] ][,...n]
       [WITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}]
       [FOR REPLICATION]
AS sql_statement [...n ]
    下面對語法中各選項進行說明:
    (1)選項“procedure_name”指存儲過程名,不能超過128個字符,“[;number]”指程序編號,用于區別同名的存儲過程。
    (2)選項“@parameter”表示參數,每個存儲過程中最多可以設定1 024個參數,要求在每個參數名前加上符號“@”。
    (3)選項“[=default]”指為對應參數設定默認值。
    (4)選項“OUTPUT”用來指定參數既有輸入又有輸出。即在調用這個存儲過程時,如果所指定的參數是要輸入的參數,同時也需要在結果中輸出,則該項必須為“OUTPUT”。
    (5)選項“WITH”用來指定存儲過程的處理方式。
    (6)選項“FOR REPLICATION”表示只能由復制方式執行[6]。
3 存儲過程在考試軟件系統中的應用
    (1)考試系統在運行時要經過三個步驟,考生抽取套題編號、抽取套題內容和將套題內容插入答題表進行答題。如果不采用存儲過程,則需用下面方法實現。
     ①隨機抽取套題編號
    select 套題編號from tblcrecord order by newid()
    ②抽取對應套題內容,套題編號存儲在dm.strNum中
      with qry1 do
     Begin
           Close ;
           SQL.Clear ;
        SQL.Add(′Select * from tblTK Where 套題編號
             ='''+dm.strNum +''');
       Open ;
       End;
       ③插入考試題到考試表tblKS中
       qry1.First;
     While not qry1.Eof Do
       begin
             qry2.Append;
             qry2.FieldByName(‘考生學號’).Value:= qry1.Field-
            ByName(‘考生學號’).Value;
         …
         qry2.Post;
       end;
       顯然,此種方法步驟繁瑣,耗時較多,在考試過程中會產生抽題緩慢的現象,系統性能嚴重降低。為避免此種情況的發生,考試系統采用了存儲過程的方法,代碼如下[7]:
       CREATE PROCEDURE cp_Paper_Add
       @MyNo char(10),
       @Mynum char(20)
       AS
       set nocount on
       exec(′insert into tblKS (學生學號、套題編號、試題序號、試題內容、試題答案、試題分數、是否答題、套題名稱、考試科目、試題類型、學生分數、類別序號) select''''+@MyNo+'''',''''+@Mynum+''',試題序號,試題內容,試題答案,試題分數,“否”,套題名稱,科目名稱,試題類型,0,類別序號  from tblTK where  套題編號='''+@Mynum+''' )
       GO
       通過執行存儲過程,將題庫中與考生抽取套題編號相匹配的記錄提取出來,并批量插入到考試表中,同時對考生分數進行了初始化為0的動作。而本考試系統就是將考生的學號和考生抽取的套題編號作為參數傳遞給存儲過程,因此,大幅度提高了考試軟件的效率。
       (2)在考試系統進行不同類型題目抽取時,如果在Delphi中直接應用SQL語句,應使用下面代碼:
       with cds1 do
       Begin
           Close ;
           SQL.Clear ;
              SQL.Add(′Select * from tblKS Where 學生學號=′);
       SQL.Add(‘ ?蓯+dm.strNo +?蓯  and 試題類型=′′單項選擇題′′ order by 試題序號′);
       Open ;
       End;
    此時,程序是在運行時才編譯的。這樣就增加了運行的時間,同時還要把完整的SQL語句傳遞給Sql Server服務器執行,這樣考試過程中勢必增加網絡流量,降低軟件的運行效率。
    如果采用存儲過程,可用下面方法實現:
    CREATE PROCEDURE sp_Query_All
       @strNo char(10)
       AS
       set nocount on
       Select Select * from tblKS Where 學生學號=@strNO and 試題類型=′′單項選擇題′′ order by 試題序號
       GO
    在客戶端調用方法如下:
       with cds1 do
       Begin
           Close ;
           SQL.Clear ;
           SQL.Add('exec sp_Query_All :strNO');

         Params.ParamByName('strNO').Value:=DM.strNO;
     Open ;
     End;
    此時,存儲過程是預先編譯的,自然節省了編譯的時間,同時只向服務器傳遞了一個參數DM.strNO,大大減少了網絡流量,提高了考試系統的性能。
    (3)在考試系統中添加考生信息時,首先要判斷是否存在該考生學號信息,然后再進行添加操作。如果采用普通SQL語句,代碼如下:
      with qry1 do
       Begin
           Close ;
           SQL.Clear ;
           SQL.Add(′select * from tblstudents where考生學號=
            :strNO′);
       Params.ParamByName('strNO').Value :=DM.strNO;   
       Open ;
       if recordcount=0 then
       begin
            qry2.Append;
            qry2.FieldByName(‘考生學號’).Value:= DM.strNO;
           …
           qry2.Post;
           End;

 

 

    采用存儲過程,可以用流控制語句編寫。采用存儲過程代碼如下:
    CREATE PROCEDURE sp_Stud_Add
       @No char(10),
       @Name char(20),
       @Sex char(2),
       @Class char(30),
       @XueYuan char(20),
       @XH smallint
        AS
       if not exists (Select *  from tblStudents where 學生學號=
        @No)
        begin
     insert into tblStudents  values(@No,@Name,@Sex,@Class,
        @XueYuan,@XH)
       end
       GO
    通過if 流控制語句實現了相同學號不能插入的功能,增強了SQL語言的功能和靈活性,避免了普通SQL語句的繁瑣與低效,提高了考試系統的性能。
    在開發數據庫應用系統時,合理使用存儲過程來完成相關的業務邏輯操作,能夠顯著提高系統的性能、運行效率和可維護性。當然,并非所有的業務邏輯都要使用存儲過程來實現。如果都使用存儲過程的方法實現,一定會增加服務器的負擔;同時,客戶端的資源也不能得到充分的利用[8]。因此,要根據具體情況,將那些使用頻繁、比較復雜的業務邏輯用存儲過程的方法實現,合理規劃服務器端和客戶端程序,使相關事務能夠均衡處理,以此提高軟件系統的性能和效率。
參考文獻
[1] 吳小林,蔣先剛,高艷錦.基于Delphi的多層數據庫應用系統連接技術的研究[J].華東交通大學學報,2005,22(1):68-70.
[2] 史創明.SQL Server 2000中文版數據庫管理與應用標準教程[M].北京:清華大學出版社,2006:264-278.
[3] 張莉,陳雷,孫龍清,等.SQL Server數據庫原理及應用(第2版)[M]. 北京:清華大學出版社,2009:265-275.
[4] 李舒,陳麗君.高校學生成績管理系統的設計與實現[J].遼寧大學學報.自然科學版,2006,33(3):284-285.
[5] 曾毅,王玉萍.SQL Server數據庫中存儲過程的實現[J].科技信息,2008(25):88-89.
[6] 肖輝輝,段艷明.SQL Server 2000存儲過程在VB中的應用[J].福建電腦,2007(12):189-190.
[7] 馬曉梅.SQL Server 2000實驗指導(第2版)[M].北京:清華大學出版社,2008:105-112.
[8] 孫曉楓,范正翹,袁海文.存儲過程在SQL Server數據庫自我管理中的高級應用[J].計算機應用,2002,22(4):92-93.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久综合成人精品亚洲另类欧美| 欧美深夜影院| 亚洲高清色综合| 欧美午夜精品一区| 国产精品实拍| 精品动漫3d一区二区三区免费版| 欧美日韩高清在线| 国产精品乱码| 国产精品一级| 欧美一区二区视频观看视频| 亚洲国内精品在线| 欧美激情偷拍| 国产精品素人视频| 妖精视频成人观看www| 亚洲精品一区久久久久久| 久久久久国产一区二区三区四区| 精品不卡在线| 欧美日韩在线视频观看| 国产一区在线观看视频| 国内精品国语自产拍在线观看| aa亚洲婷婷| 亚洲国产一区二区三区在线播| 99视频一区二区三区| 久久精品中文字幕免费mv| 国产精品久久久久久久久久直播| 欧美mv日韩mv亚洲| 欧美性感一类影片在线播放| 国产精品久久久久久久久久久久| 国内精品嫩模av私拍在线观看| 你懂的网址国产 欧美| 久久女同互慰一区二区三区| 亚洲一区三区视频在线观看| 亚洲精品一区二区三区四区高清| 亚洲黑丝一区二区| 亚洲黄色尤物视频| 国产精品久久久久久av下载红粉| 亚洲午夜羞羞片| 午夜日韩在线观看| 欧美日韩中文字幕综合视频| 国产伦精品一区二区三区视频黑人| 久久se精品一区二区| 久热这里只精品99re8久| 91久久国产综合久久| 欧美成人中文字幕在线| 亚洲国产精品专区久久| 欧美在线免费一级片| 欧美天堂亚洲电影院在线观看| 欧美性猛交99久久久久99按摩| 久久久精品国产免费观看同学| 欧美视频福利| 亚洲欧洲日韩在线| 久久久久久久久久看片| 亚洲韩日在线| 欧美视频免费在线| 国产精品99久久久久久白浆小说| 欧美14一18处毛片| 亚洲欧美国产另类| 影音先锋成人资源站| 狠狠色狠色综合曰曰| 久久亚洲免费| 亚洲欧美资源在线| 一区二区三区日韩欧美精品| 欧美大香线蕉线伊人久久国产精品| 在线观看日韩精品| 亚洲国产精品一区二区www在线| 亚洲人体偷拍| 欧美日韩国产高清| 欧美电影免费观看高清| 日韩一级黄色大片| 欧美日韩裸体免费视频| 国内综合精品午夜久久资源| 国产欧美日韩精品a在线观看| 国产精品v欧美精品v日韩| 欧美福利精品| 国产欧美一区二区三区国产幕精品| 亚洲国产精品精华液网站| 性欧美1819性猛交| 欧美一区2区视频在线观看| 欧美成人资源网| 在线视频观看日韩| 亚洲视频一二三| 欧美亚男人的天堂| 久久久999精品免费| 欧美一区二区性| 老司机免费视频一区二区三区| 亚洲欧洲在线一区| 在线观看成人一级片| 亚洲区国产区| 亚洲一区二区三区高清不卡| 日韩网站在线观看| 在线视频一区二区| 日韩视频一区二区三区在线播放| 国产精品久久久久久久app| 久久成人av少妇免费| 欧美日韩色综合| 国产精品一区二区三区久久| 亚洲免费中文字幕| 精品盗摄一区二区三区| 亚洲精品美女| 久久久精品网| 亚洲午夜av| 国产精品乱人伦一区二区| 夜夜爽av福利精品导航| 国产美女搞久久| 一区二区三区**美女毛片| 国产在线播放一区二区三区| 欧美在线短视频| 99国产精品久久久久久久| 国产精品人人做人人爽| 欧美在线不卡视频| 亚洲欧美一区二区在线观看| 国产精品电影在线观看| 欧美电影专区| 欧美日韩综合不卡| 欧美精品久久久久久久久久| 国产精品日韩欧美一区二区| 韩国精品主播一区二区在线观看| 亚洲欧洲日韩综合二区| 国产精品中文字幕在线观看| 久久九九热re6这里有精品| 午夜久久美女| 欧美aa在线视频| 欧美成人综合一区| 欧美日韩精品一二三区| 欧美一区二区三区四区视频| 亚洲开发第一视频在线播放| 国产日韩欧美成人| 欧美人与性动交cc0o| 99国内精品久久久久久久软件| 国产精品久久久久久久app| 久久精品国产欧美亚洲人人爽| 亚洲视频www| 国产视频一区在线观看| 亚洲国产欧美久久| 欧美一级专区免费大片| 午夜精品福利在线| 娇妻被交换粗又大又硬视频欧美| 亚洲片国产一区一级在线观看| 亚洲第一天堂无码专区| 久久亚洲一区二区三区四区| aa国产精品| 欧美一区二区三区喷汁尤物| 亚洲精品免费在线| 国产亚洲精品自拍| 亚洲精品黄网在线观看| 欧美日韩一区二区三区| 欧美精品一区二区三区高清aⅴ| 亚洲一区二区欧美| 精品白丝av| 激情综合久久| 韩国av一区二区三区| 欧美91精品| 麻豆精品在线播放| 欧美一区二区三区久久精品茉莉花| 亚洲国产欧美不卡在线观看| 午夜精品福利一区二区三区av| 亚洲午夜久久久久久久久电影院| 欧美日韩黄视频| 亚洲一区二区三区视频播放| 欧美福利精品| 亚洲一区二区三区免费观看| 在线观看久久av| 久久综合色婷婷| 在线看无码的免费网站| 欧美电影免费观看网站| 欧美成人日韩| 欧美日本一区二区视频在线观看| 欧美.日韩.国产.一区.二区| 亚洲视频电影图片偷拍一区| 久久久水蜜桃av免费网站| 欧美日韩综合久久| 欧美午夜性色大片在线观看| 午夜国产一区| 国产精品久久久久一区二区三区共| 亚洲激情在线激情| 欧美日韩亚洲一区二区三区四区| 欧美成人嫩草网站| 欧美诱惑福利视频| 欧美午夜精品久久久久久浪潮| 国产精品日韩在线一区| 日韩亚洲视频| 欧美日韩精品欧美日韩精品| 欧美日本在线视频| 亚洲成色www久久网站| 国产乱码精品一区二区三| 亚洲黄色大片| 国内精品模特av私拍在线观看| 激情综合五月天| 久久久久9999亚洲精品| 激情欧美日韩一区| 国产亚洲一级高清| 国产真实精品久久二三区| 亚洲裸体视频| 亚洲日本成人网| 欧美日韩国产综合视频在线观看中文| 亚洲欧洲一区二区在线观看| 欧美成人午夜视频| 久久精品亚洲国产奇米99| 在线不卡亚洲| 一卡二卡3卡四卡高清精品视频| 久久久久99精品国产片| 久久av资源网| 乱码第一页成人| 欧美日本在线| 免播放器亚洲一区| 欧美中文在线视频| 国产精品爽爽ⅴa在线观看| 欧美成人dvd在线视频| 亚洲免费一区二区| 欧美电影免费网站| 麻豆精品视频在线观看视频| 亚洲一区在线视频| 国产精品第十页| 亚洲高清不卡一区| 亚洲综合日本| 国产日韩av高清| 亚洲自拍都市欧美小说| 亚洲视频中文字幕| 国产欧美日韩亚洲一区二区三区| 在线成人小视频| 欧美久久久久| 国产日产高清欧美一区二区三区| 国产精品美女久久久久久免费| 久久资源av| 午夜在线a亚洲v天堂网2018| 怡红院精品视频在线观看极品| 麻豆国产va免费精品高清在线| 亚洲精品视频啊美女在线直播| 欧美在线观看天堂一区二区三区| 91久久精品国产91性色tv| 国产精品久久网| 亚洲激情第一页| 亚洲一区三区视频在线观看| 欧美日韩在线一区二区三区| 亚洲色图制服丝袜| 国产有码在线一区二区视频| 1024日韩| 韩国成人精品a∨在线观看| 久久人人爽国产| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲精品美女在线观看| 日韩一区二区福利| 国产精品亚洲综合| 国内精品久久久久影院薰衣草| 欧美日韩美女在线观看| 国产欧美 在线欧美| 亚洲欧美日韩一区| 国产精品久久久久国产精品日日| 久久午夜影视| 一本色道久久综合一区| 夜久久久久久| 亚洲美女中出| 欧美成人精品一区二区三区| 蜜臀va亚洲va欧美va天堂| 一色屋精品视频在线看| 欧美系列电影免费观看| 亚洲精品一二三区| 黄色成人免费观看| 国产一区二区三区电影在线观看| 亚洲精品国产系列| 欧美日韩日日骚| 亚洲另类在线视频| 国产亚洲欧美日韩在线一区| 午夜日韩在线| 久久人人97超碰国产公开结果| 欧美精品免费播放| 欧美午夜电影在线| 99视频在线精品国自产拍免费观看| 欧美精品1区2区3区| 欧美日韩一区精品| 久久综合九色综合欧美狠狠| 国外成人性视频| 噜噜噜躁狠狠躁狠狠精品视频| 午夜久久电影网| 亚洲精品一区二区三区在线观看| 欧美阿v一级看视频| 亚洲国产精品小视频| 欧美在线视频导航| 国产精品色婷婷久久58| 欧美一区二区高清在线观看| 欧美激情一区二区在线| 欧美在线播放高清精品| 国产女主播在线一区二区| 欧美激情女人20p| 国产精品毛片a∨一区二区三区|国| 欧美喷水视频| 久久久999精品免费| 欧美激情国产日韩精品一区18| 亚洲欧洲日本在线| 久久精品视频播放| 亚洲缚视频在线观看| 欧美激情网友自拍| 六十路精品视频| 欧美精品在线一区二区三区| 99re6热在线精品视频播放速度| 一区二区三区四区国产精品| 韩国三级在线一区| 久久久久一区二区三区| 亚洲激情在线视频| 国产欧美在线视频| 亚洲特色特黄| 亚洲在线不卡| 最新日韩精品| 亚洲图片欧洲图片av| 亚洲国产va精品久久久不卡综合| 国产女主播一区二区三区| 国内精品久久久久久久果冻传媒| 欧美日韩免费网站| 一区二区三区在线视频观看| 欧美黑人一区二区三区| 久久成人综合网| 在线成人黄色| 欧美国产日本在线| 亚洲精品1区| 亚洲美女色禁图| 亚洲黄色尤物视频| **性色生活片久久毛片| 六月天综合网| 国产综合色产在线精品| 久久这里有精品视频| 好看的av在线不卡观看| 国产亚洲欧美一区在线观看| 欧美在线1区| 韩国成人精品a∨在线观看| 亚洲激情在线视频| 亚洲电影第1页| 日韩亚洲不卡在线| 欧美日韩一区二区三区四区在线观看|