如何在传统ASP上进行参数化SQL查询?
有人可以告诉我在VBscript中使用经典ASP执行参数化SQL查询最简单的方法吗?
一个可编辑的例子将是最好的。
使用adodb.command对象。
with createobject("adodb.command") .activeConnection = application("connectionstring") .commandText = "select * from sometable where id=?" set rs = .execute( ,array(123)) end with
我也build议使用自定义数据库访问对象,而不是直接使用adodb。 这使您可以构build更好的api,提高可testing性并为debugging/日志logging/分析添加钩子。 其次,您可以使用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
另一个选项是在ASP的顶部附近添加对以下types库的引用。 据说这比一个包含有更好的性能:
<!--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" -->
这里是一些types库的列表。