首页 新闻 赞助 找找看

来自远古的问题,老鸟请解答:classic asp + VBscript + mssql2008中参数化模糊查询该怎么写?

0
悬赏园豆:20 [已解决问题] 解决于 2014-09-01 10:33

classic asp + VBscript + mssql2008根据用户输入的关键词mykey查询数据库表utable中的uname字段含有这个关键词mykey的记录,我的代码如下:

mykey=request.QueryString("mykey")

set myCommand = Server.CreateObject("ADODB.Command")
myCommand.ActiveConnection=conn
myCommand.CommandType=1
myCommand.CommandText="select * from utable where uname like ?"
myCommand.Parameters.Append(myCommand.CreateParameter("uname",129,1,50,"%"+mykey+"%"))
myCommand.Prepared = true
set rs = myCommand.Execute

查询不到记录!

 

请问应该怎么写才正确? 请园中的classic asp老鸟抽空给予解答,感激不尽!!!

< >
分享
最佳答案
0

网上找到的例子:

 

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Your connection string"
 
set cmd = server.createobject("ADODB.Command")
sql = " SELECT * FROM table WHERE id = ? or name like ?"
 
cmd.ActiveConnection = conn
cmd.CommandText = qText
cmd.CommandType = adCmdText
cmd.CommandTimeout = 900
cmd.Parameters.Append cmd.CreateParameter("@id", adInteger, adParamInput, ,request("id"))
cmd.Parameters.Append cmd.CreateParameter("@name", adVarchar, adParamInput, 50, "%" & request("name") & "%")
 
set rs = cmd.Execute
Set rs = Nothing
Set conn = Nothing
%>
收获园豆:20
XiaoFaye | 老鸟四级 |园豆:3087 | 2014-09-01 06:11
其他回答(1)
0

myCommand.CommandText="select * from utable where uname like @uname"
myCommand.Parameters.Append(myCommand.CreateParameter("@uname",129,1,50,"%"+mykey+"%"))

 

换成这样可以不?以前写asp没用过参数,但按照SQL的参数格式,你的写法是不好的。

519740105 | 园豆:5810 (大侠五级) | 2014-08-31 13:14

谢谢,这样也是不可以的哦,classic asp中参数占位只能用? 

支持(0) 反对(0) dotNetLovePython | 园豆:205 (菜鸟二级) | 2014-08-31 13:44

classic asp vbscript太古老了,网上资料都快匿迹了,查了两天资料都没查到可行的

支持(0) 反对(0) dotNetLovePython | 园豆:205 (菜鸟二级) | 2014-08-31 13:46

@webFollower: 只能用 ? 做参数占位?这个不理想,应该还有别的办法解决。

 

不过,如果不考虑SQL注入,或者进行过滤,可以把代码修改为:

myCommand.CommandText="select * from utable where uname like ‘%" & mykey & "'"

然后,把参数配置处理掉。

 

这里为了安全,务必对mykey的内容进行SQL注入过滤,最简单的方案是:mykey.replace("'", "''") 

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-08-31 14:08

@519740105: classic asp vbscript中是只能用 ? 的

 

就是用参数化查询方式防注入,为了程序的规范、一致性,现在就是在寻求参数化查询方式的模糊查询的写法,希望知道的前辈给予解答!

支持(0) 反对(0) dotNetLovePython | 园豆:205 (菜鸟二级) | 2014-08-31 14:36

@webFollower: 还真头痛。

想质问你为什么还使用ASP,但我想一定还有理由的。

非必要,一般都不会使用ASP了,再去研究这个的成本真的很高,以前写ASP的时候,都是通过我前面的方案进行SQL注入的防备,倒一直没有想过通过参数的方式来处理。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-08-31 17:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册