Классический ASP / Параметризованный полнотекстовый запрос - PullRequest
0 голосов
/ 16 января 2012

При написании параметризованных запросов в Classic ASP я использовал следующий синтаксис:

Set cmdConn = Server.CreateObject("ADODB.Command")
Set cmdConn.ActiveConnection = Conn
cmdConn.Prepared = True

SQL = " INSERT INTO myTable (column1, column2, column3) VALUES (?, ?, ?); "

Set newParameter = cmdConn.CreateParameter("@column1", ad_Integer, ad_ParamInput, Len(input1), input1)
cmdConn.Parameters.Append newParameter
Set newParameter = cmdConn.CreateParameter("@column2", ad_Integer, ad_ParamInput, Len(input2), input2)
cmdConn.Parameters.Append newParameter
Set newParameter = cmdConn.CreateParameter("@column3", ad_Integer, ad_ParamInput, Len(input3), input3)
cmdConn.Parameters.Append newParameter

cmdConn.CommandText = SQL
cmdConn.Execute

И я понимаю (самоучка), что там, где я добавляю @column1 при добавленииновый параметр, это назначает параметр для этого конкретного столбца.Я могу ошибаться, хотя.Так что это полностью смутило меня при попытке написать полнотекстовый запрос.

Это мой оригинальный полнотекстовый запрос:

SQL = "SELECT * FROM myTable WHERE MATCH (column1, column2, column3) AGAINST ('"&input&"' IN BOOLEAN MODE)"

Может кто-нибудь показать мне, какой синтаксис использовать для этогоquery?

Я бы предположил, что SQL будет выглядеть так:

SQL = "SELECT * FROM myTable WHERE MATCH (column1, column2, column3) AGAINST (? IN BOOLEAN MODE)"

Но не уверен, что поместить в строку newParameter.Любая помощь и объяснения с благодарностью получены ...

1 Ответ

1 голос
/ 16 января 2012

"@columnN" - это имя этого параметра, и оно не связано со столбцом columnN. Это поле является необязательным, поэтому оно может быть не указано для всех ваших параметров, если вы никогда не будете использовать имя при обращении к нему.

Может использоваться для получения значения выходных и входных / выходных параметров из объекта Command, а не для ссылки на параметр в порядке, в котором он был добавлен в коллекцию Parameters. Я верю , что некоторые СУБД также будут поддерживать использование именованных параметров в строке запроса вместо? (легче читать, предположительно).

Чтобы ответить на ваш конкретный вопрос,

Set newParameter = cmdConn.CreateParameter(, adInteger, adParamInput, Len(input), input)
cmdConn.Parameters.Append newParameter
...