USE PARAMETERISED QUERIES!!
Извините кричать, но я не могу не подчеркнуть, насколько это важно. Пример, который вы дали "Henry's"
, на самом деле является ручным примером и просто вызовет запрос. Кто-то может ввести "Henry'; DROP TABLE users;--"
, и теперь вы потеряли таблицу своих пользователей.
Даже если у вас есть ограниченный вход, например выпадающий список, вы все равно должны использовать параметризованные запросы, поскольку они позволяют значительно упростить ввод текста, а также позволяют использовать планы запросов из кеша.
Я не использовал VB.NET в годы, так что простите любые синтаксические ошибки, но я думаю, что вы хотите что-то вроде:
Dim query As String = "insert into users(comment) values (@Comment);"
Using connection As New SqlConnection("Your Connection String")
Using command As New SqlCommand(query, connection)
command.Parameters.Add("@Comment", SqlDbType.VarChar, 255).Value = txt_comment.Text
command.ExecuteNonQuery()
End Using
End Using
использования параметризованных запросов. Это также предотвращает проблемы с SQL-инъекциями. –
SQL ожидает, что все кавычки будут закрыты, что не происходит в вашем примере. Просто убедитесь, что все ваши запросы построены точно так, как ожидалось, независимо от пользовательских входов. Кстати, этот конкретный код очень удобен для SQL-инъекций: вы всегда должны проверять запрос перед подключением к серверу (параметризованные запросы, как это было предложено Мэттом, позаботятся об этом автоматически). – varocarbas
Кто-нибудь сказал «Маленькие столы Бобби»? –