2012-09-25 45 views
0

我是一個試圖做一個非常簡單的頁面的ASP初學者。其功能是接受來自用戶的兩個輸入並顯示基於下一頁上的報告。該報告的數據是在ASP頁面上的SQL查詢中獲取的。如何將變量傳遞給ASP查詢

這是我做了什麼至今:

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 

我現在面臨的問題是,我無法找到如何正確地傳遞用戶輸入查詢。

請幫忙!

回答

2

使用?作爲佔位符,然後將參數傳遞到Execute method

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

+1因爲我一直在使用經典的ASP永遠不知道你可以通過這種方式傳遞參數。 – johna

1

要將參數發送到數據庫查詢,您需要使用命令對象。

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 

你關閉了連接,否則你最終會耗盡你的連接池之前,不要結束的響應。