前言
一直用ASP+ACCESS來編寫網頁和公司的內部應用系統,內部應用系統也就是大家說的OA吧,這個我也不知道,公司又叫它ERP,反正不管什么,它是用來幫助公司處理日常工作的,簡化勞動的.從來沒用過存儲過程,所有的添加,刪除,修改都是在ASP里面寫程序執行,代碼很多.數據量少的時候沒什么感覺,挺快的,可等到數據量大的時候,上W條記錄查詢,尤其是不分頁都顯示在一頁里的時候情況就出現了,速度很慢,要10幾秒才有反應,所以想到了要用SQL的存儲過程來簡化代碼和加快程序的執行速度!
在學習了51JS里的一篇教程SQL SERVER數據庫開發之存儲過程應用又在QQ里大俠的指導下終于有點入門,下邊是我的學習筆記,有問題歡迎大家一起討論!~
1.ASP調用存儲過程
首先在SQL里建立一個數據庫叫it,怎么建我就不說了,這個簡單,一看就知道了。然后在庫里建個表,寫幾個數據記錄,如下:

點擊放大

打開查詢分析器:

在里邊寫下如下語句點擊綠色按鈕執行它:

你到數據庫的存儲過程里面看,已經多了一個名為upGetUserName的存儲過程了表明已經成功的建立了存儲過程,如果沒有,試著刷新下。

下面用ASP來調用它:
CONN文件(連接數據庫)如下:
<%
set db=server.createobject("adodb.connection")
db.Open ("driver={SQL Server};server=192.168.18.254;uid=sa;pwd=;database=it;")
%>
192.168.18.254為SQL SERVER服務器的IP地址,uid pwd it 分別為連接數據庫的用戶和密碼及所要連的數據庫
新建一個index.asp文件,內容如下:
<!--#include file="conn.asp" -->
<%
set rs=server.createobject("adodb.recordset")
sql = "exec upGetUserName"
rs.open sql,db,3,2
response.write rs.recordcount&"<br>"
while not rs.eof
response.write rs("uname")&"<br>"
rs.movenext
wend
response.End
%>
在瀏覽器中執行這個頁面如果顯示如下:

那么恭喜你,成功了!
上面是不帶參數的存儲過程調用,但我們在使用中一定會有參數的,下面就來介紹一個有參數的。
還是上邊的例子,我們把原來的存儲過程改成這樣:
CREATE PROC upGetUserName
@intUserId NVARCHAR(50),
@intUserpass NVARCHAR(50)
AS
BEGIN
SELECT uname FROM users WHERE uId=@intUserId and pass=@intUserpass
END
GO
可以把原來的存儲過程刪除,然后把這個寫在查詢分析器里來執行,也可以直接在原來的存儲過程里改。
@intUserId NVARCHAR(50),
@intUserpass NVARCHAR(50)
是要傳送進來的參數,@是必須的,因為有兩個,所以之間用“,”來分隔
index文件改成如下:
<!--#include file="conn.asp" -->
<%
set rs=server.createobject("adodb.recordset")
sql = "exec upGetUserName 'snake','snake'"
rs.open sql,db,3,2
response.write rs.recordcount&"<br>"
while not rs.eof
response.write rs("uname")&"<br>"
rs.movenext
wend
response.End
%>
注意:sql = "exec upGetUserName 'snake','snake'"
兩個snake不是一個意思,一個是uid,一個是pass,存儲過程返回的是uid="snake"并且pass="snake"的記錄
數據庫里只有一條這樣的記錄,所以會顯示:

OK,你已經入門了!就這么簡單!
新聞熱點
疑難解答