经典ASP /参数化全文查询

时间:2012-01-16 17:38:28

标签: asp-classic parameters

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

有人可以告诉我这个查询使用什么语法吗?

我认为SQL看起来像这样:

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

但不确定要为newParameter字符串添加什么。任何帮助和解释都感激不尽......

1 个答案:

答案 0 :(得分:1)

"@columnN"是该参数的名称,与列columnN无关。此字段是可选的,因此如果您在引用它时永远不会使用该名称,则可能未指定所有参数。

它可用于从Command对象检索输出和输入/输出参数的值,而不是按参数集合中的参数顺序引用参数。我相信有些DBMS还支持在查询字符串中使用命名参数而不是? (据推测,更容易阅读)。

要回答您的具体问题,

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