2013-07-22 305 views
2

第一篇文章,但感谢您从本网站迄今获得的所有帮助。ASP经典VBscript参数化SQL查询?

我试图参数化SQL查询:如果我使用(没有参数)

query_url = Request.QueryString("ID") 

Set rs = Server.CreateObject("ADODB.Recordset") 

Set cmd = server.createobject("ADODB.Command") 

cmd.ActiveConnection = Internet_String 
cmd.CommandType = adCmdText 
cmd.CommandText = "SELECT NAME FROM OWNER.TABLE WHERE ID = " + "?" + "" 

Set param = cmd.CreateParameter(, , ,200 , Replace(query_url, "'", "''")) 

cmd.Parameters.Append param 

Set rs = cmd.Execute() 

所以:

SELECT NAME FROM OWNER.TABLE WHERE ID = " + Replace(query_url, "'", "''") + "" 

它正常工作,所以我知道我的数据库连接和query_url是加工。我的SQL语句在参数化查询中出错了吗?我尝试了很多不同的方式。

当我在Dreamweaver中运行我的参数化查询时,页面不会随时加载,只是无限旋转,我假设它没有从数据库获取响应。

谢谢!

编辑的帮助

好了感谢到目前为止,我越来越近。现在的页面加载,但等领域仍是空白,什么继承人我走到这一步:

Set rs = Server.CreateObject("ADODB.Recordset") 

Set cmd = server.createobject("ADODB.Command") 

cmd.ActiveConnection = internet_string  
cmd.CommandType = adCmdText 

cmd.CommandText = "SELECT NAME FROM OWNER.TABLE WHERE ID = @param" 

Set param = cmd.CreateParameter("@param", , ,200 , query_url) 

cmd.Parameters.Append param 

response.Write(param) 

Set rs = cmd.Execute() 

这里是我如何引用数据:

<strong>Name: <%=(rs.Fields.Item("NAME").Value)%></strong> 

任何想法?

+0

不知道有关传统的ASP和VBScript逃跑“,但在其他的语言,你不需要当您发送查询参数时引号。无论如何,请使用您的参数的硬编码值作为疑难解答方法。 –

+0

不要在参数值中替代撇号(即使用'cmd.CreateParameter(,,200,query_url')。由于您使用的是参数,所有转义特殊字符的工作都是在幕后完成的。 –

回答

1

使用指定的占位符;

cmd.CommandText = "SELECT NAME FROM OWNER.TABLE WHERE ID = @ID" 

然后提供其价值

Set param = cmd.CreateParameter("@ID", , ,200, Replace(query_url, "'", "''")) 

FYI你不需要在参数化查询

+0

现在我收到一个空白页面,这比超时更好,但名称字段仍然没有填充。我正在使用的页面是一个dwt(Dreamweaver模板文件),也许这与一些事情有关为什么字段不会填充?对不起,如果这只是超出了我原来的问题的范围。 – user2607172