SQL 参数未返回任何结果
SQL parameters not returning any results
以下代码未返回任何结果:
search = "'%" & Request.QueryString("itemname") & "%'"
Set cmd = Server.CreateObject("ADODB.COMMAND")
Set cmd.ActiveConnection = conn
sql = ""
sql = sql & "DECLARE @search varchar;"
sql = sql & "SET @search = ?;"
sql = sql & "SELECT ID, itemname, itemtype FROM vw_items WHERE itemname LIKE @search"
cmd.CommandText = sql
cmd.CommandType = adCmdText
response.write("<strong>You searched for:</strong> " & search & "<br /><br
/>")
cmd.Parameters.Append cmd.CreateParameter("@search", adVarchar, adParamInput, 50, search)
set rs = cmd.Execute
else
search = null
strSQL2 = "SELECT * FROM vw_items"
set rs = server.CreateObject("ADODB.Recordset")
rs.open strSQL2,conn
end if
我看过这个答案: 并尝试修复我的答案,但没有成功
如有任何帮助,我们将不胜感激
使用 ADODB.Command
时,提供程序会根据调用 Execute()
方法之前设置的 Parameters
集合推断数据类型。
正如您传入的那样
search = "'%" & Request.QueryString("itemname") & "%'"
实际上,当 SQL 由提供者执行时,它看起来像 (因为它已经知道 Parameter
是一个 VARCHAR
数据类型)
WHERE itemname LIKE ''%youritemname%''
当你真正想要的时候
WHERE itemname LIKE '%youritemname%'
这意味着当前查询正在对物理字符串 '%youritemname%'
执行 LIKE
而不是执行实际的模式匹配查询。
修复很简单,从 search
变量中删除单引号,像这样;
search = "%" & Request.QueryString("itemname") & "%"
有用的链接
- A: How to use ASP variables in SQL statement (使用
ADODB.Command
对象时的有用提示)
以下代码未返回任何结果:
search = "'%" & Request.QueryString("itemname") & "%'"
Set cmd = Server.CreateObject("ADODB.COMMAND")
Set cmd.ActiveConnection = conn
sql = ""
sql = sql & "DECLARE @search varchar;"
sql = sql & "SET @search = ?;"
sql = sql & "SELECT ID, itemname, itemtype FROM vw_items WHERE itemname LIKE @search"
cmd.CommandText = sql
cmd.CommandType = adCmdText
response.write("<strong>You searched for:</strong> " & search & "<br /><br
/>")
cmd.Parameters.Append cmd.CreateParameter("@search", adVarchar, adParamInput, 50, search)
set rs = cmd.Execute
else
search = null
strSQL2 = "SELECT * FROM vw_items"
set rs = server.CreateObject("ADODB.Recordset")
rs.open strSQL2,conn
end if
我看过这个答案:
如有任何帮助,我们将不胜感激
使用 ADODB.Command
时,提供程序会根据调用 Execute()
方法之前设置的 Parameters
集合推断数据类型。
正如您传入的那样
search = "'%" & Request.QueryString("itemname") & "%'"
实际上,当 SQL 由提供者执行时,它看起来像 (因为它已经知道 Parameter
是一个 VARCHAR
数据类型)
WHERE itemname LIKE ''%youritemname%''
当你真正想要的时候
WHERE itemname LIKE '%youritemname%'
这意味着当前查询正在对物理字符串 '%youritemname%'
执行 LIKE
而不是执行实际的模式匹配查询。
修复很简单,从 search
变量中删除单引号,像这样;
search = "%" & Request.QueryString("itemname") & "%"
有用的链接
- A: How to use ASP variables in SQL statement (使用
ADODB.Command
对象时的有用提示)