2009-04-20 92 views
9

有人可以告訴我在VBscript中使用經典ASP執行參數化SQL查詢的最簡單方法嗎?如何在經典ASP上進行參數化SQL查詢?

一個可編譯的例子是最好的。

+0

您是指引用參數化SQL查詢嗎? – 2009-04-20 22:59:27

+0

是的。要更新這個問題來澄清。謝謝! – 2009-04-20 23:06:05

回答

13

使用adodb.command對象。

with createobject("adodb.command") 
    .activeConnection = application("connectionstring") 
    .commandText = "select * from sometable where id=?" 
    set rs = .execute(,array(123)) 
end with 

我還建議使用自定義數據庫訪問對象,而不是直接使用adodb。這允許您構建更好的api,提高可測試性併爲調試/日誌記錄/分析添加鉤子。其次,您可以使用class_terminiate事件添加請求範圍的事務,並對錯誤進行隱式回滾。歐勒DB訪問對象提供了以下查詢API

call db.execute("update some_table set column=? where id=?", array(value, id)) 
set rs = db.fetch_rs("select * from some_table where id=?", array(id)) 
count = db.fetch_scalar("select count(*) from some_table where column > ?", array(value)) 
11

我假設你指的是參數化SQL查詢。如果是這種情況,那麼VBScript代碼會是這個樣子:

Set adoCon = Server.CreateObject("ADODB.Connection") 
adoCon.Open "connectionstring" 
SET cmd = Server.CreateObject("ADODB.Command") 
cmd.ActiveConnection = adoCon 
cmd.CommandType= adCmdStoredProc 
cmd.CommandText = "GetCustomerByFirstName" 

cmd.Parameters.Append cmd.CreateParameter("@FirstName",adVarchar,adParamInput,50,"John")  

Set Rec = cmd.Execute() 
While NOT Rec.EOF 
    'code to iterate through the recordset 
    Rec.MoveNext 
End While 

UPDATE:您需要包括ADOVBS.INC文件被認可的常量。

這裏有一個鏈接:ADOVBS.inc

+0

我是否需要包含一些文件才能讓ASP識別adVarchar和adParamInput常量? – 2009-04-20 23:13:06

+1

是的。這是該文件的鏈接http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt – 2009-04-20 23:15:25

8

另一個選項包括adovbs.inc是一個引用添加到以下類型庫靠近你的ASP的頂部。據說,這具有更好的性能比包括:

<!--METADATA TYPE="TypeLib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" FILE="C:\Program Files\Common Files\System\ado\msado15.dll" VERSION="2.5" --> 

Here是某種類型庫的列表。