Pab*_*ruz 9 sql vbscript asp-classic
有人能告诉我使用VBscript中的经典ASP执行参数化SQL查询的最简单方法吗?
一个可编辑的例子是最好的.
小智 13
使用adodb.command对象.
with createobject("adodb.command")
.activeConnection = application("connectionstring")
.commandText = "select * from sometable where id=?"
set rs = .execute( ,array(123))
end with
Run Code Online (Sandbox Code Playgroud)
我还建议使用自定义数据库访问对象,而不是直接使用adodb.这允许您构建更好的API,提高可测试性并为debuging/logging/profiling添加钩子.其次,您可以使用class_terminiate事件添加带有隐式回滚错误的请求范围事务.Oure db access对象提供以下查询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))
Run Code Online (Sandbox Code Playgroud)
Jos*_*lio 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
Run Code Online (Sandbox Code Playgroud)
更新:您需要包含ADOVBS.inc文件以便识别常量.
这是一个链接:ADOVBS.inc
包含的另一个选项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" -->
Run Code Online (Sandbox Code Playgroud)
这是一些类型库的列表.