【问题标题】:How to pass variables to ASP query如何将变量传递给 ASP 查询
【发布时间】:2012-09-25 04:56:23
【问题描述】:

我是一名 ASP 初学者,试图制作一个非常简单的页面。该功能是接受来自用户的两个输入并根据下一页上的输入显示报告。报表的数据是通过 ASP 页面上的 SQL 查询获取的。

这是我到目前为止所做的:

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=MSDAORA;
                       Data Source=şemam;
                       User Id=xyz;
                       Password=xyz;"
aranan = Request("aranan")

Set objRs = objConn.Execute("select * from my_department where user_id = <input from user>")
if objRs.BOF and objRs.eof then
  response.end
end if

我面临的问题是我找不到如何在查询中正确传递用户输入。

请帮忙!

【问题讨论】:

    标签: html asp-classic


    【解决方案1】:

    使用?作为占位符,然后将参数传入Execute method。

    dim paramArray(0)
    paramArray(0) = 123
    Set objRs = objConn.Execute("select * from my_department where user_id = ?", paramArray)
    

    【讨论】:

    • +1,因为我一直在使用 Classic ASP,从不知道您可以通过这种方式传递参数。
    【解决方案2】:

    要将参数发送到数据库查询,您需要使用命令对象。

    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Provider=MSDAORA;" & _
                 "Data Source=şemam;" & _
                 "User Id=xyz;" & _
                 "Password=xyz;"
    aranan = Request("aranan")
    
    Set objCmd = Server.CreateObject("ADODB.Command")
    Set objCmd.ActiveConnection = objConn
    objCmd.CommandText = "SELECT * FROM my_department WHERE user_id = ?"
    objCmd.CommandType = 1
    
    Set objRs = objCmd.Execute(, array(aranan))
    if not objRs.EOF then
    ' Do whatever you need to with the result...
    end if
    objRs.Close
    objConn.Close
    

    在关闭连接之前不要结束响应,否则最终会耗尽连接池。

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多