katkot_rewsh Ответов: 3

Использовать текстовое поле.текстовое значение


этот код хорошо работает, когда я ставлю numbe как 20
но когда мне нужно поместить данные из текстового поля textbox1.текст он сделает ошибку меня, это игра, сделанная с душой в синтаксис не правильный

Cmd.CommandText = "select * from table1 where field1= 20 /pre>

<pre>Cmd.CommandText = "select * from table1 where field1= '" & TextBox1.Text & "'" 


Что я уже пробовал:

УМК.Свойства commandtext = "выбрать * из таблица1 где поле1= '" &амп; текстовое поле textbox1.Текст &ампер; "'"

3 Ответов

Рейтинг:
8

katkot_rewsh

Cmd.CommandText = "select * from Masterbatch where MBColor = "& Val(ComboBox9.SelectedItem) &""


Richard Deeming

Ты действительно не слушаешь, да?!

Попробуйте ввести в текстовое поле следующее и выполнить запрос:

42'; DELETE FROM Masterbatch; --


Теперь прочтите об уязвимостях SQL-инъекций и исправьте весь свой код базы данных:
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

Рейтинг:
2

katkot_rewsh

select * from Table1 where Filed1= '" & TextBox1. Text & "'"


phil.o

Это то же самое, что вы пробовали и что было неверно.
Единственный достойный способ - это использовать параметризованный запрос:

using (SqlCommand Cmd = ...)
{
   Cmd.CommandText = "SELECT * FROM Table1 WHERE Field1 = @value";
   Cmd.Parameters.Add("@value", SqlDbType.NVarChar).Value = TextBox1.Text;
   // Then execute the command.
}

Рейтинг:
1

RickZeeland

Вам не нужны одинарные кавычки, так как вы ищете числовое значение, так что это будет:

Cmd.CommandText = "select * from table1 where field1= " & TextBox1.Text 

Но одно предупреждение: делать это таким образом опасно из-за риска "SQL-инъекции", лучше использовать параметризованные запросы, если ваш код используется другими.
Читайте об этом здесь:
Как я параметризовал запросы VB.NET код[^]
А здесь: Использование C# для подключения и запроса из базы данных SQL | Sander Rossel[^]


Maciej Los

5ed!

katkot_rewsh

это работает так
выберите * из таблицы 1, где Filed1= '" & TextBox1. Текст & "'
большое спасибо

Richard Deeming

Надеюсь, вы готовы заплатить огромный штраф, когда это произойдет. SQL-инъекция[^] уязвимость используется для взлома вашей базы данных! Аналогичная уязвимость обошлась TalkTalk в 400 000 фунтов стерлингов еще в 2016 году, так что вам понадобятся довольно глубокие карманы.