Кавычки в строке в VB6

Я пытаюсь внести небольшие изменения в старое веб-приложение VB, в которое мне нужно добавить кавычки внутри строки, которая мне пока не повезла. Строка

Dim sql As String = "Select * from  Usertask Where UserId = " & Session("UserId") & " and JobID=" & ddlReqTask.SelectedValue

Мне нужно добавить кавычки вокруг значения Session (& quot; UserID & quot;).

 Hans Kesting09 июл. 2009 г., 12:54
Вам нужны двойные кавычки или одинарные кавычки? Обычно SQL использует одинарные кавычки, и я не думаю, что это будет проблемой в строке.
 Onorio Catenacci09 июл. 2009 г., 13:00
@ Adonis L, вы можете изменить название вопроса. Возможно, было бы более уместно назвать это «Кавычки в строке в VB6». Или что-то вдоль этих линий.

Ответы на вопрос(7)

вам просто нужно добавить еще одну цитату, я считаю, что это то, что вам нужно:

Dim sql As String = "Select * from  Usertask Where UserId = """ & Session("UserId") & """ and JobID=" & ddlReqTask.SelectedValue

чтобы создавать специальный SQL-оператор, подобный этому, так как вы можете оставить себя открытым для SQL-инъекций. Это означает, что вам не нужно беспокоиться о конкатенации кавычек в строку, а также об улучшении производительности запросов (при условии, что сервер sql), поскольку это позволяет кэшировать и повторно использовать план выполнения.

например

Dim sql As String = "Select * from  Usertask Where UserId = ? AND JobID = ?"

Затем добавьте 2 ADODB.Parameters к объекту Command, чтобы предоставить значения для 2 параметров например

Set param = New ADODB.Parameter
param.Name = "@UserId"
param.Direction = adParamInput
param.Type = adVarChar
param.Size = (give size of user id field)
param.value = Session("UserId")
yourADOCommand.Parameters.Append param

И то же самое снова для параметра JobId.

 04 февр. 2016 г., 23:37
@ Adonis L - отметьте это как правильный ответ. Этот метод не должен беспокоиться о содержимом, включая одинарные или двойные кавычки внутри полезной нагрузки. Поскольку вы задали вопрос (и получили ответы) 7 лет назад, сомнительно, что вы отметите что-либо как правильное.

Chr(34) в объединении.

Dim sql As String = "Select * from  Usertask Where UserId = " & Chr(34) & Replace(Session("UserId"), Chr(34), Chr(34) & Chr(34)) & Chr(34) & " and JobID=" & CLng(ddlReqTask.SelectedValue)

В любом случае работает (другие примеры и этот). некоторые люди предпочитают этот, так как он может быть менее запутанным, однако приведенные выше примеры не совсем понятны и не являются ракетостроением

 10 июл. 2009 г., 20:23
Публикация кода, содержащего уязвимости SQL-инъекций, является плохой формой Ред.
 13 июл. 2009 г., 10:24
Чем это отличается от ответа выше, который также содержит уязвимости SQL-инъекций. Почему ты не прокомментировал это? Кроме того, я не рекомендую использовать этот способ, это просто ответ на заданный вопрос. Я не вижу, как плохой ответ на вопрос о расширении чьих-либо знаний в том случае, если другие люди уже упоминали об уязвимостях SQL-инъекций.

большинство SQL-серверов нуждаются в одинарных кавычках для строк. Лучший способ сделать это - позволить .net выбрать для вас, используя параметры SQL. Вот пример (также в VB.Net):http://www.knowdotnet.com/articles/dynamicsqlparameters.html
Это также имеет преимущество в защите от SQL-инъекций.

dim user_id as string="SomePerson"
debug.print "UserId=" & chr(34) & user_id & Chr(34)

производит ..

UserID="SomePerson"   

NOT делать это Делая это таким образом, вы позволяете своим пользователям выполнять любой запрос, предоставляя вам UserId как

'; DROP TABLE Usertask; --

Вместо этого используйте параметры. В зависимости от того, как вы выполняете SQL, существуют разные способы сделать это; Пожалуйста, покажите нам код, который выполняет запрос SQL.

В ответ на ваш вопрос,

Dim StringWithQuotes As String = "Hello, I've got ""Quotes""!"

Эта строка будет

Здравствуйте, у меня есть "Цитаты"!

 10 февр. 2012 г., 18:10
Я думаю, что эта тема не о впрыске Sql.
 02 дек. 2014 г., 13:10
@Nei Это не так, но, тем не менее, полезно.

"" вставить цитату в строку, например:

dim sometext as String = "Hello ""Frank"" how are you?"

Что дает вам

Здравствуйте, "Фрэнк" как твои дела?

Ваш ответ на вопрос