利用在传统的ASP脚本ADO.NET [英] Utilize ADO.NET within Classic ASP script

查看:180
本文介绍了利用在传统的ASP脚本ADO.NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在写这返回一个值的一些简单的查询,我想获得的ADO.NET ExecuteScalar方法的从传统的ASP的ADO libary行为。不过,我倒是preFER不要重新发明轮子。是否有可能在传统的ASP实例ADO.NET的Command对象?如果是这样,我怎么会去这样做呢?

如果我需要重新实现此功能,什么是做到这一点的最好方法是什么?

下面就是我想要做的(在VBScript中):

 设置CMD =的Server.CreateObject(ADODB.Command)
cmd.ActiveConnection =康恩
cmd.CommandText =SELECT COUNT(*)FROM corp_crcchallenge WHERE cc_email =?
appendParam CMD,电子邮件,adVarChar,adParamInput,255,电子邮件
emailFound = cmd.ExecuteScalar()
 

appendParam是一个子程序我做出追加参数,所以我不会有重复在此应用程序的另一部分自己太多。这使得它有点更容易阅读。

我在想,像下面可能是正确的方向,如果我需要重新实现。 (同样的VBScript)

  emailFound = cmd.Execute(没什么,没什么,adExecuteRecord)
 

解决方案

命令对象返回数据记录。你可以从记录集字段的值。在这个例子中,我曾用mycount的下的定义字段名称。如果你想要一个更通用的,你可以只得到最后一行rs.fields(0)的值。

简单的例子:

 设置CMD =的Server.CreateObject(ADODB.Command)
设置RS =的Server.CreateObject(ADODB.RecordSet)

用CMD
 .ActiveConnection =康恩
 .CommandText =SELECT COUNT(*)作为mycount的FROM corp_crcchallenge WHERE cc_email = @ P1
 .createparameter(@ P1,adVArChar,adParamInput ,,电子邮件)
 集RS = .Execute
结尾

RTN = rs.fields(mycount的)
 

可重复使用的功能,例如:

  N = MyScalar(SELECT COUNT(*)FROM corp_crcchallenge WHERE cc_email = @ P1,abc@def.com)

功能MyScalar(SQL,参数1)
    设置CMD =的Server.CreateObject(ADODB.Command)
    设置RS =的Server.CreateObject(ADODB.RecordSet)

    用CMD
        .ActiveConnection =康恩
        .CommandText = SQL
        .createparameter(@ P1,adVArChar,adParamInput ,,参数1)
        集RS = .Execute
    结尾

    MyScalar = rs.fields(0)

端功能
 

I'm writing some simple queries which return a single value and I'd like to get the ADO.NET ExecuteScalar method's behavior from Classic ASP's ADO libary. However, I'd prefer to not re-invent the wheel. Is it possible to instantiate ADO.NET's Command object within classic ASP? If so, how would I go about doing that?

If I do need to re-implement this feature, what is the best way to do that?

Here's what I'm trying to do (In 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 is a subroutine I made to append the param so I wouldn't have to repeat myself too much in another part of this app. It makes it a bit easier to read.

I'm thinking that something like the below might be the right direction if I need to re-implement. (Again VBScript)

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

解决方案

The command object returns data as recordset. You can get the value from the recordsets field. In this example, I have used a defined field name of "MyCount". If you wanted a more generic, you could just get the value of rs.fields(0) in the last line.

Quick Example:

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")

Reusable function example:

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

这篇关于利用在传统的ASP脚本ADO.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆