Member 14603071 Ответов: 1

Как искать данные из базы данных с помощью like % в C# like




например мне нужны данные из pname который является hassan но я хочу написать только h все значения которые начинаются с h приходят
и после получения этого я хочу отобразить в datagridview






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

con.Open();
               SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM stock  WHERE pname LIKE'"+textBox2.Text+"'" , con);
               DataTable dtbl = new DataTable();
               sqlDa.Fill(dtbl);

               dataGridView1.DataSource = dtbl;



               con.Close();

ZurdoDev

1. не объединяйте sql-операторы, так как это представляет собой серьезную угрозу безопасности и позволит мне, например, удалить таблицы вашей базы данных.
2. Что не работает с вашим кодом?

1 Ответов

Рейтинг:
5

Richard Deeming

Простой:

SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM stock  WHERE pname LIKE @pname", con);
sqlDa.SelectCommand.Parameters.AddWithValue("@pname", textBox2.Text + "%");
sqlDa.Fill(dtbl);

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

Кроме того, прекратите использовать имена Visual Studio по умолчанию для ваших элементов управления. Конечно, вы можете вспомнить, что такое ценность в textBox42 сейчас но когда вы вернетесь, чтобы отредактировать свой код в следующем месяце, вы забудете. Если вы дадите элементам управления осмысленное имя, вам будет гораздо легче понять, для чего они используются.