繁体   English   中英

如何在经典ASP上进行参数化SQL查询?

[英]How to make a parametrized SQL Query on Classic ASP?

有人可以向我展示使用VBscript中的Classic ASP执行参数化SQL查询的最简单方法吗?

一个可编译的示例将是最好的。

使用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事件添加具有错误隐式回滚的请求范围的事务。 Oure数据库访问对象提供以下查询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))

我假设您是指参数化的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

更新:您需要包括ADOVBS.inc文件才能识别常量。

这里是一个链接: 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" -->

是一些类型库的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM