在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字符串添加什么。任何帮助和解释都感激不尽......
答案 0 :(得分:1)
"@columnN"
是该参数的名称,与列columnN
无关。此字段是可选的,因此如果您在引用它时永远不会使用该名称,则可能未指定所有参数。
它可用于从Command对象检索输出和输入/输出参数的值,而不是按参数集合中的参数顺序引用参数。我相信有些DBMS还支持在查询字符串中使用命名参数而不是? (据推测,更容易阅读)。
要回答您的具体问题,
Set newParameter = cmdConn.CreateParameter(, adInteger, adParamInput, Len(input), input)
cmdConn.Parameters.Append newParameter