2013-07-22 3 views
2

Первое сообщение, но спасибо за всю помощь, которую я получил с этого сайта.ASP Classic 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, страница не будет загружаться в любое время, просто вращается бесконечно, я предполагаю, что она не получает ответ от БД.

Спасибо!

EDIT

Alright спасибо за помощь до сих пор, я все ближе. Нагрузки страницы сейчас, но поля все еще пусто, Вот что я получил до сих пор:

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

Не уверен, что классические осины и 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