我正在编写一些返回单个值的简单查询,并且我想从经典 ASP 的 ADO 库中获取 ADO.NET ExecuteScalar 方法的行为。但是,我不想重新发明轮子。是否可以在经典 ASP 中实例化 ADO.NET 的 Command 对象?如果是这样,我将如何去做呢?
如果我确实需要重新实现此功能,最好的方法是什么?
这是我想要做的(在 VBScript 中):
set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandText = "SELECT COUNT(*) FROM corp_crcchallenge WHERE cc_email = ?"
appendParam cmd, "email", adVarChar, adParamInput, 255, email
emailFound = cmd.ExecuteScalar()
appendParam 是我用来附加参数的子例程,因此我不必在该应用程序的其他部分重复太多。它使它更容易阅读。
我认为如果我需要重新实施,类似下面的内容可能是正确的方向。 (又是 VBScript)
emailFound = cmd.Execute(Nothing, Nothing, adExecuteRecord)
命令对象以记录集形式返回数据。您可以从记录集字段获取值。在此示例中,我使用了定义的字段名称“MyCount”。如果你想要一个更通用的,你可以在最后一行获取 rs.fields(0) 的值。
简单示例:
set cmd = Server.CreateObject("ADODB.Command")
set rs = server.createObject("ADODB.RecordSet")
with cmd
.ActiveConnection = conn
.CommandText = "SELECT COUNT(*) as MyCount FROM corp_crcchallenge WHERE cc_email = @p1"
.createparameter("@p1",adVArChar,adParamInput,,email)
set rs = .Execute
end with
rtn = rs.fields("MyCount")
可重用函数示例:
n = MyScalar("SELECT COUNT(*) FROM corp_crcchallenge WHERE cc_email = @p1","[email protected] /cdn-cgi/l/email-protection")
function MyScalar(sql, Param1)
set cmd = Server.CreateObject("ADODB.Command")
set rs = server.createObject("ADODB.RecordSet")
with cmd
.ActiveConnection = conn
.CommandText = sql
.createparameter("@p1",adVArChar,adParamInput,,Param1)
set rs = .Execute
end with
MyScalar = rs.fields(0)
end function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)