Mysql
 sql >> база данни >  >> RDS >> Mysql

текстово поле за търсене в mysql c#

Освен възможното SQL-инжектиране чрез конкатениране на низове, използването на параметри, каквито имате, е много близко.

Низът на вашата заявка има (barras ='@barcodes'), премахва единичните 'кавички' и вашият параметър трябва да бъде "баркодовете", а не barras. Що се отнася до вашия продукт със заместващи символи "%", създайте низ, който принуждава целия параметър да бъде включен по подразбиране... като

string selectQuery = 
@"select 
      descricao,
      codigo 
   from 
      produtos 
   where 
          barras = @barcodes 
      or descricao like @product";

MySqlCommand command = new MySqlCommand(selectQuery, connection);
// the "@" is not required for the parameter NAMEs below, jut the string
// name of the parameter as in the query.

// Ok to use the actual text from your textbox entry here
command.Parameters.AddWithValue("barcodes", Txtcodigo.Text);

// but use the STRING created with '%' before/after created above
string parmProduct = '%' + Txtcodigo.Text.Trim() + '%';
command.Parameters.AddWithValue("product", parmProduct);

// NOW you can execute the reader and pull your data
connection.Open();
MySqlDataReader reader = command.ExecuteReader();
DataTable dt2 = new DataTable();
dt2.Load(reader);
DataView dvDataTable = new DataView(dt2);
Txtproduto.Text = reader.GetString("descricao");



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявката връща твърде малко редове

  2. В SQL / MySQL има ли причини да не се поставя връзка едно към едно в една и съща таблица?

  3. Отпадане на уникално ограничение от MySQL таблица

  4. задайте current_timestamp само при вмъкване на нов ред

  5. Разберете кой ред не успява при добавяне на ограничение в MySQL