一使用Command對象和Parameter對象傳遞參數 本講將主要使用Microsoft SQL Server
數據庫
先建立一個連接文件AdoSQL
asp備用
以後用到時不再特別說明
<%
AdoSQL
asp
Option Explicit
Response
Expires =
第一部分: 建立連接
Dim Cnn
StrCnn
Set Cnn = Server
CreateObject(
ADODB
Connection
)
StrCnn =
Provider=sqloledb; User ID=sa; Password=; Initial Catalog=pubs; Data Source=ICBCZJP
Cnn
Open StrCnn
%>
注意
自己使用時要將Data Source設為你的數據庫服務器所在的機器名
另外
以前使用Access數據庫時
用Microsoft Access
可以很方便的查看字段及數據
而使用SQL Server數據庫
尤其是並不在數據庫服務器
而是在另一台機器上調試ASP腳本時
要查看字段及數據便需另外安裝工具
這裡向你提供一個工具
Msqry
exe(Microsoft Query)
這個文件隨Office
安裝
一般位於目錄
Microsoft Office\Office
下
例wuf
asp
<%@ LANGUAGE=
VBSCRIPT
%>
<!
#include file=
AdoSQL
asp
>
<!
#include file=
adovbs
inc
>
<%
wuf
asp
Dim cmdTest
prmTest
rsTest
創建 Command 對象
Set cmdTest = Server
CreateObject(
ADODB
Command
)
Recordset
Command對象都可以通過ActiveConnection屬性來連接Connection對象
cmdTest
ActiveConnection = Cnn
SQL命令
含兩個參數
用 ? 表示
cmdTest
CommandText =
Update jobs Set job_desc = ? Where job_id = ?
設命令類型為 SQL 語句
cmdTest
CommandType = adCmdText
Prepared 屬性決定是否將 SQL 命令先行編譯
將其設為True
可以加快運行
cmdTest
Prepared = True
創建 Parameter 對象
Set prmTest=cmdTest
CreateParameter(
job_desc
adVarChar
adParamInput
網絡
)
將數據追加到 Parameters 數據集合中
cmdTest
Parameters
Append prmTest
Set prmTest = cmdTest
CreateParameter(
job_id
adSmallInt
adParamInput
)
cmdTest
Parameters
Append prmTest
執行修改 – 不需要返回結果
簡單的使用cmdTest
Execute 就可以了
cmdTest
Execute
重新設置參數運行 – 便可修改另一條數據
cmdTest
Parameters(
job_id
) =
cmdTest
Parameters(
job_desc
) =
測試
cmdTest
Execute
重新設置參數運行
cmdTest(
job_id
) =
cmdTest(
job_desc
) =
金融
cmdTest
Execute
Set rsTest = Cnn
Execute(
Select job_id
job_desc From jobs
)
While Not rsTest
EOF
Response
Write rsTest(
) & rsTest(
) &
<br>
rsTest
MoveNext
Wend
Cnn
close : Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
%>
分析
.Command對象的CreateParameter方法用來為SQL命令或存儲過程建立參數對象
共有五個參數(五個參數都是可選項)
第一個參數
參數對象的名稱
第二個參數
參數對象的數據類型
種類太多
還是參考ADO幫助吧
這裡adVarChar(字符串值)
adSmallInt(
字節帶符號整型)
第三個參數
參數類型
可以是
adParamInput(指示輸入參數)
adParamOutput( 指示為輸出參數)
adParamReturnValue(指示為返回值)
adParamUnknown(指示參數類型無法確定)
adParamInputOutput(指示為輸入/輸出參數)
第四個參數
參數的數據長度
最好指定為與數據庫中對應字段長度相等
以免使用時出錯
尤其數據類型為VarChar時
如果是整型或日期型則不必提供該值
第五個參數
參數的設置初值
.cmdTest
Parameters
Append方法增加一個Parameter對象到Parameters數據集合中
從本例中也可看到如何使用多個參數
.從本例可以看到
只需要重新設定輸入參數
便可執行對其他數據的修改
非常方便
這一思路在編程時也是最常用的方法之一
.重設參數
既可以使用cmdTest
Parameters
也可以省略為cmdTest(
job_id
)
二在ASP中使用存儲過程 什麼是存儲過程(存儲過程位於數據庫服務器中
是一個SQL語句的集合
可包含一個或多個SQL語句)
怎樣創建存儲過程不屬於本講座的內容
本講座主要是舉例說明在ASP中如何調用存儲過程
使用存儲過程的好處是大大的
存儲過程比在ASP腳本中運行SQL命令效率更高
可以提高整體性能並減輕網絡負載(減少了在網絡服務器和數據服務器之間的交互)
可以優化ASP代碼和增強代碼靈活性等等
(一)在存儲過程中使用輸入參數
本例中使用的存儲過程為SQL Server
自帶的
byroyalty
裡面的一條SQL語句非常簡單
無非是多了一個CREATE PROCEDURE byroyalty
並且有一個輸入參數為@percentage
CREATE PROCEDURE byroyalty @percentage int
AS
select au_id from titleauthor
where titleauthor
royaltyper = @percentage
serve by
例wuf
asp
<% @LANGUAGE = VBScript %>
<!
#include file=
AdoSQL
asp
>
<!
#include file=
adovbs
inc
>
<%
wuf
asp
Dim cmdTest
prmTest
rsTest
Set cmdTest = Server
CreateObject(
ADODB
Command
)
cmdTest
CommandText =
byroyalty
存儲過程名
設命令類型為 存儲過程
cmdTest
CommandType = adCmdStoredProc
創建 Parameter 對象
Set prmTest = Server
CreateObject(
ADODB
Parameter
)
Type屬性對應wuf
asp中的第二個參數
prmTest
Type = adInteger
字節的帶符號整型
Direction屬性對應wuf
asp中的第三個參數
prmTest
Direction = adParamInput
Value屬性對應wuf
asp中的第五個參數
prmTest
Value =
cmdTest
Parameters
Append prmTest
Set cmdTest
ActiveConnection = Cnn
需要返回一個記錄集
故使用Set rsTest = cmdTest
Execute
Set rsTest = cmdTest
Execute
While Not rsTest
EOF
Response
Write rsTest(
) &
<br>
rsTest
MoveNext
Wend
Cnn
close
Set rsTest = Nothing : Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
%>
CommandText屬性既可以指定SQL命令
也可以指定為存儲過程或者是表名稱
在本例中
創建Parameter對象與wuf
asp略有不同
其實仔細看看
意思也是差不多的
本例還有兩個屬性未用
prmTest
Name
prmTest
Size
加上Type
Direction和Value
對應於wuf
asp中的五個參數
(二)使用輸出參數
從數據庫表中取得一個記錄或計算一個值時
需要使用返回輸出參數的存儲過程
為了舉例
先在SQL Server的pubs庫中新建一存儲過程OUTemploy
該存儲過程需要輸入兩個日期
然後輸出一個最大值
CREATE PROCEDURE OUTemploy
(
@job_lvl tinyint OUTPUT
@hire_date
datetime
@hire_date
datetime
)
AS
select @job_lvl = MAX(job_lvl) from employee
where hire_date >= @hire_date
and hire_date <= @hire_date
有多種方法可以建立存儲過程
.使用Microsoft SQL Server的Enterprise Manager
打開後在左邊的樹目錄中依次打開
Console Root – Microsoft SQL Servers – SQL Server Group – ICBCZJP(Windows NT) – databases – pubs – stored procedure – New stored procedure
輸入存儲過程後
還可對其進行語法檢測
.使用Microsoft SQL Server的Query Analyzer
先連接數據庫服務器並選擇pubs數據庫
輸入上面的存儲過程並點擊Execute Query(或按F
)
.使用VB
打開菜單
視圖
/
數據視圖窗口
後
右鍵單擊
數據鏈接
/
新建數據鏈接
.使用ASP腳本創建存儲過程
例wuf
asp
<% @LANGUAGE = VBScript %>
<!
#include file=
AdoSQL
asp
>
From:http://tw.wingwit.com/Article/program/net/201311/11987.html