淺談在ASP中調(diào)用SQL SERVER中的存儲過程_第1頁
淺談在ASP中調(diào)用SQL SERVER中的存儲過程_第2頁
淺談在ASP中調(diào)用SQL SERVER中的存儲過程_第3頁
淺談在ASP中調(diào)用SQL SERVER中的存儲過程_第4頁
淺談在ASP中調(diào)用SQL SERVER中的存儲過程_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、淺談在ASP中調(diào)用SQL SERVER中的存儲過程論文導(dǎo)讀:ASP (ActiveServer Pages) 是效勞器端的腳本編寫環(huán)境,可用來創(chuàng)立動態(tài)Web頁、生成功能強大的Web應(yīng)用程序和各種基于B/S結(jié)構(gòu)的管理系統(tǒng)。本文就針對ASP調(diào)用SQL SERVER中的存儲過程來談?wù)勛约旱挠^點。下面主要介紹如何利用COMMAND對象來對存儲過程的調(diào)用。關(guān)鍵詞:ASP,存儲過程,COMMAND對象,CONNECTION對象ASP (ActiveServer Pages) 是效勞器端的腳本編寫環(huán)境,可用來創(chuàng)立動態(tài)Web頁、生成功能強大的Web應(yīng)用程序和各種基于B/S結(jié)構(gòu)的管理系統(tǒng)。ASP技術(shù)以通俗易懂的

2、編程方式受到廣闊讀者的青睞,讀者通過短期的根底知識及實例培訓(xùn)即可開發(fā)出自己的WEB網(wǎng)站。SQLSERVER是WEB站點部署最常用的數(shù)據(jù)庫,它與ASP結(jié)合開發(fā)成為這一領(lǐng)域的經(jīng)典合作。本文就針對ASP調(diào)用SQL SERVER中的存儲過程來談?wù)勛约旱挠^點。1、 存儲過程的簡介1.1存儲過程的定義:存儲過程是一組編譯在單個執(zhí)行方案中的Transact-SQL語句,它將一些固定的操作集中起來交給SQL SERVER數(shù)據(jù)庫效勞器完成,以實現(xiàn)某個任務(wù)。在需要使用時只要調(diào)用即可。1.2使用存儲過程的優(yōu)點1通過本地存儲、代碼預(yù)編譯和緩存技術(shù)實現(xiàn)高性能的數(shù)據(jù)操作。存儲過程是SQL語句和局部控制流語句的預(yù)編譯集合,

3、存儲過程被進行了編譯和優(yōu)化,當存儲過程第一次執(zhí)行時,SQL SERVER為其產(chǎn)生查詢方案并將其保存在內(nèi)存中,這樣以后在調(diào)用該存儲過程時就不必再進行編譯,這能在一定程度上改善系統(tǒng)的性能。2通過通用編程結(jié)構(gòu)和過程重用實現(xiàn)編程框架。如果業(yè)務(wù)規(guī)那么發(fā)生了變化,可以通過修改存儲過程來適應(yīng)新的業(yè)務(wù)規(guī)那么,而不必修改客戶端應(yīng)用程序。這樣所有調(diào)用該存儲過程的應(yīng)用程序就會遵循新的業(yè)務(wù)規(guī)那么。3通過隔離和加密的方法提高了數(shù)據(jù)庫的平安性。數(shù)據(jù)庫用戶可以通過得到權(quán)限來執(zhí)行存儲過程,而不必給予用戶直接訪問數(shù)據(jù)庫對象的權(quán)限。這些對象將由存儲過程來進行操作。另外,存儲過程可以加密,這樣用戶就無法閱讀存儲過程中的Transa

4、ct-SQL命令。這些平安特性將數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)庫用戶隔離開來,這也進一步保證了數(shù)據(jù)的完整性和可靠性。2、ASP調(diào)用存儲過程ASP頁是包括HTML標記、文本和腳本命令的文件。ASP頁可調(diào)用ActiveX組件來執(zhí)行任務(wù),也可以通過ADO組件實現(xiàn)對數(shù)據(jù)庫的調(diào)用。2.1 ADO對象簡介ASP通過一組稱為ADO的對象模塊來訪問數(shù)據(jù)庫。這樣用戶在編碼時,就不用考慮數(shù)據(jù)庫的類型,因為ADO對象可以通過OLE DB訪問數(shù)據(jù)庫。OLE DB是一種數(shù)據(jù)庫體系結(jié)構(gòu),它使應(yīng)用程序可以對存儲在不同數(shù)據(jù)庫中的數(shù)據(jù)進行統(tǒng)一的訪問。但在訪問數(shù)據(jù)庫之前,必須建立數(shù)據(jù)庫的連接。在ASP中連接數(shù)據(jù)庫主要是利用ADO對象中的con

5、nection對象來完成。論文檢測。具體見后面的實例。2.2 ASP利用ADO調(diào)用存儲過程的方法在ASP中,調(diào)用存儲過程的方法一般來說有兩種:一種是用execute直接調(diào)用存儲過程,另一種是利用command對象來調(diào)用存儲過程。下面分別通過實例來介紹這兩種調(diào)用方式。這種方法對調(diào)用一些簡單的無輸出參數(shù)的存儲過程比擬方便。其操作步驟如下:步驟1:編寫sql語句:execute存儲過程名參數(shù);。設(shè)在XK數(shù)據(jù)庫中有一student表,其結(jié)構(gòu)為classno,stuno,stuname,pwd,現(xiàn)要求創(chuàng)立一個存儲過程p_student,使之能完成將student表中的所有記錄顯示在頁面上。那么所對應(yīng)的代

6、碼為:Create procedure p_studentAsSelect * from student/*此時是直接利用recordset.open來執(zhí)行存儲過程的,當然也可用connection對象的execute方法來調(diào)用,不過此時要先建一個connection對象*/雖然利用這兩種方法能實現(xiàn)對存儲過程的調(diào)用,但Recordset對象會要求數(shù)據(jù)庫傳送所有的數(shù)據(jù),那么數(shù)據(jù)量很大的時候就會造成網(wǎng)絡(luò)的阻塞和數(shù)據(jù)庫效勞器的負荷過重,從而導(dǎo)致整體的執(zhí)行效率降低,因此在數(shù)據(jù)流量大時,常用command對象來完成對存儲過程的調(diào)用,尤其在用參數(shù)查詢時其優(yōu)點更明顯。主要是因為Command對象可以直接調(diào)用

7、SQL語句,所執(zhí)行的操作又在數(shù)據(jù)庫效勞器中進行的,顯然會有很高的執(zhí)行效率。下面主要介紹如何利用COMMAND對象來對存儲過程的調(diào)用。1、ASP中command對象簡介在ASP中Command對象又稱為命令對象,是對數(shù)據(jù)庫執(zhí)行命令的對象,利用它的對象、方法與屬性可以執(zhí)行對數(shù)據(jù)庫的查詢、添加、刪除和修改記錄等操作。2、 command對象的建立該對象的建立有兩種方法:一種是利用connection對象來建立command對象,另一種是直接建立command對象。由于command對象必須依賴于connection對象,所以直接建立command對象看起來沒有明確建立connection對象,但還要

8、隱含地建立一個connection對象。不過,由于沒有明確建立,所以就導(dǎo)致connection對象的有些功能無法使用。因此大家一般采用connection對象來建立command對象的。3、ASP調(diào)用存儲過程實例眾所周知,存儲過程之所以能提高程序的執(zhí)行效率,主要是因為它能夠利用參數(shù)查詢。為了方便說明,根據(jù)存儲過程的輸入輸出,作以下簡單分類:1只返回單一記錄集的存儲過程設(shè)有如以下存儲過程,它主要是取得student表中的所有記錄,即返回一個結(jié)果集,當然如果student表是一張空表,那么ASP調(diào)用存儲過程的結(jié)果集是既無輸入也無輸出。其對應(yīng)代碼如下:CREATE PROCEDURE p_stude

9、ntasselect * from studentgo通過command對象調(diào)用該存儲過程的ASP關(guān)鍵代碼如下:DIM MyComm,MyRst,strconnstringSet MyComm =Server.CreateObject(ADODB.Command)strConnString= driver=SQL Server;server=(local);uid=sa;pwd=;database=xkMyComm.ActiveConnection =strconnstring strconnstring是數(shù)據(jù)庫連接字串MyComm.CommandText = p_student指定存儲過程名

10、MyComm.CommandType = 4 說明這是一個存儲過程MyComm.Prepared = true 要求將SQL命令先行編譯Set MyRst = MyComm.Execute /*存儲過程取得的記錄集賦給MyRst,接下來,可以對MyRst進行操作,如記錄的增、刪、改等操作*/Set MyComm = Nothing2有返回值的存儲過程。設(shè)有一張表student,通過創(chuàng)立存儲過程來刪除表中的所有記錄,如果在delete順利執(zhí)行時,返回1,否那么返回0,并進行回滾操作。然后利用ASP調(diào)用帶返回值的存儲過程并取得返回值。實現(xiàn)這種功能的存儲過程所對應(yīng)的代碼如下:CREATE PROCE

11、DURE p_delstudentasbeginBEGINTRANSACTIONdelete from studentIF error=0beginCOMMITTRANSACTIONreturn 1endELSEbeginROLLBACKTRANSACTIONreturn 0endreturnendgo此時為了在ASP中取得返回值,需要利用Parameters集合來聲明參數(shù)。此ASP代碼如下:DIM MyComm,MyPara,strconnstring /*定義變量*/Set MyComm =Server.CreateObject(ADODB.Command) /*創(chuàng)立command對象*/

12、strConnString= driver=SQL Server;server=(local);uid=sa;pwd=;database=xkMyComm.ActiveConnection =strconnstring strconnstring是數(shù)據(jù)庫連接字串MyComm.CommandText = p_delstudent指定存儲過程名MyComm.CommandType = 4 說明這是一個存儲過程MyComm.Prepared = true 要求將SQL命令先行編譯MyComm.Execute取得返回值DIM retValueretValue = MyComm(0) 或retValue

13、 = MyComm.Parameters(0)Set MyComm = Nothing說明:在MyComm.CreateParameter(RETURN,2,4)中,各參數(shù)的含義如下:第一個參數(shù)(RETURE)為參數(shù)名。論文檢測。參數(shù)名可以任意設(shè)定,但一般應(yīng)與存儲過程中聲明的參數(shù)名相同。此處是返回值,我習(xí)慣上設(shè)為RETURE;第二個參數(shù)(2),說明該參數(shù)的數(shù)據(jù)類型。論文檢測。具體的類型代碼請參閱ADO參考。當其值為2時表示該參數(shù)的類型為adSmallInt。第三個參數(shù)(4),說明參數(shù)的性質(zhì),此處4說明這是一個返回值。此參數(shù)取值的說明如下:0 : 類型無法確定; 1: 輸入?yún)?shù);2: 輸入?yún)?shù);

14、3:輸入或輸出參數(shù);4: 返回值3有輸入?yún)?shù)和輸出參數(shù)的存儲過程。在ADO中可能通過command對象對存儲過程的訪問,并且它可以直接執(zhí)行SQL效勞器的存儲過程,而命令中所需要的參數(shù)可以借助于其屬性Pamaters來進行處理。在進行大量數(shù)據(jù)處理時,常使用帶輸入輸出參數(shù)的存儲過程。如student表中的stuno,便可得該學(xué)生的stuname。所對應(yīng)的存儲過程如下:CREATE PROCEDURE p_getstuNamestuno char(6), stuname varchar(10) outputasbeginif stuno isnull returnselect stuname=use

15、rnamefrom student where stuno=stunoreturnendgo調(diào)用該存儲過程的ASP代碼如下:DIM MyComm,stuno,stunameSet stuno =200001Set MyComm =Server.CreateObject(ADODB.Command)MyComm.ActiveConnection=driver=SQL Server;server=(local);uid=sa;pwd=;database=xkMyComm.CommandText = p_getstuname指定存儲過程名MyComm.CommandType = 4 說明這是一個存儲

16、過程MyComm.Prepared = true 要求將SQL命令先行編譯聲明參數(shù)MyComm.Execute取得出參UserName = MyComm(1)Set MyComm = Nothing注意:由以上代碼可知,聲明輸入?yún)?shù)時需要5個參數(shù),聲明輸出參數(shù)時需要4個參數(shù)。它們分別代表的含義是:參數(shù)名、參數(shù)數(shù)據(jù)類型、參數(shù)類型、數(shù)據(jù)長度、參數(shù)值。只是聲明輸出參數(shù)時,沒有最后一個參數(shù),參數(shù)值而已。另外在聲明參數(shù)時,順序一定要與存儲過程中定義的順序相同,而且各參數(shù)的數(shù)據(jù)類型、長度也要與存儲過程中定義的相同。3、結(jié)束語ASP對SQL SERVER存儲過程的調(diào)用主要有兩種方法。而根據(jù)輸入、輸出參數(shù)、返回值的情況可能有多種,而本文僅對返回

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論