2013-07-22 313 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