在经典ASP脚本中使用ADO.NET

时间:2010-09-13 17:05:44

标签: ado.net asp-classic vbscript ado

我正在编写一些返回单个值的简单查询,并且我想从Classic 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是我用来附加param的子程序,所以我不必在这个应用程序的另一部分重复太多。它使阅读起来更容易一些。

如果我需要重新实施,我认为下面的内容可能是正确的方向。 (再次VBScript)

emailFound = cmd.Execute(Nothing, Nothing, adExecuteRecord)

1 个答案:

答案 0 :(得分:2)

命令对象将数据作为记录集返回。您可以从记录集字段中获取值。在此示例中,我使用了已定义的字段名称“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","abc@def.com")

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