【问题标题】:ASP Classic VBscript Parameterized SQL Query?ASP Classic VBscript 参数化 SQL 查询?
【发布时间】:2013-07-22 14:52:44
【问题描述】:

第一次发帖,但感谢您到目前为止从该网站获得的所有帮助。

我正在尝试参数化 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>

有什么想法吗?

【问题讨论】:

  • 不确定经典的 asp 和 vbscript,但在其他语言中,您在发送查询参数时不需要引号。无论如何,使用硬编码值作为您的参数的故障排除方法。
  • 不要在参数值中替换撇号(即,使用cmd.CreateParameter(, , ,200 , query_url)。由于您使用的是参数,所有转义特殊字符的工作都在幕后完成。

标签: sql asp-classic vbscript ado parameterized-query


【解决方案1】:

使用命名占位符;

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

然后提供它的值

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

仅供参考,您不需要在参数化查询中转义 '

【讨论】:

  • 感谢您的回答。现在我收到一个空白页,这比超时要好,但名称字段仍然没有填充。我正在使用的页面是一个 dwt(dreamweaver 模板文件),也许这与为什么字段不会填充有关?对不起,如果这超出了我原来的问题范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多