Как отфильтровать datagrid с помощью textbox
Dim connection As OleDb.OleDbConnection = New OleDbConnection connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & System.Environment.CurrentDirectory & "\InventSystem.accdb" connection.Open() Dim da As OleDb.OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM Items WHERE Barcode Like '%" & TextBox1.Text & "%' ", connection) Dim ds As New DataTable da.Fill(ds) If ds.Rows.Count = 0 Then MessageBox.Show("Record not Found") End If connection.Dispose()
Что я уже пробовал:
Я действительно Новичок в этом деле. Ребята, вы можете мне помочь, я чувствую, что в моем коде отсутствует фильтр datagrid
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Using connection As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|AppData|\InventSystem.accdb") Dim da As New OleDb.OleDbDataAdapter("SELECT * FROM Items WHERE Barcode Like '%' + @find + '%'", connection) da.SelectCommand.Parameters.AddWithValue("@find", TextBox1.Text) Dim table As New DataTable() da.Fill(table) If table.Rows.Count = 0 Then MessageBox.Show("Record not found") Else ' TODO: Show the returned rows somewhere... End If End Using
Richard Deeming
Кроме того, вы на самом деле не сказали нам, в чем проблема.