利用在传统的ASP脚本ADO.NET [英] Utilize ADO.NET within Classic ASP script
问题描述
我在写这返回一个值的一些简单的查询,我想获得的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屋!