【问题标题】:Utilize ADO.NET within Classic ASP script在经典 ASP 脚本中使用 ADO.NET
【发布时间】:2010-09-13 17:05:44
【问题描述】:

我正在编写一些返回单个值的简单查询,我想从 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 是我为附加参数而制作的子例程,因此我不必在此应用程序的另一部分重复太多。它使它更容易阅读。

如果我需要重新实现,我认为类似下面的内容可能是正确的方向。 (又是 VBScript)

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

【问题讨论】:

    标签: ado.net asp-classic vbscript ado


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多