Использовать ADO.NET в скрипте Classic ASP - PullRequest
2 голосов
/ 13 сентября 2010

Я пишу несколько простых запросов, которые возвращают одно значение, и я хотел бы получить поведение метода ADO.NET ExecuteScalar из библиотеки ADO в Classic ASP. Тем не менее, я бы предпочел не изобретать велосипед. Можно ли создать экземпляр объекта Command ADO.NET в классическом ASP? Если так, как бы я поступил так?

Если мне нужно повторно реализовать эту функцию, каков наилучший способ сделать это?

Вот что я пытаюсь сделать (в 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)

1 Ответ

2 голосов
/ 13 сентября 2010

Объект команды возвращает данные в виде набора записей. Вы можете получить значение из поля наборов записей. В этом примере я использовал определенное имя поля «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
...