我创建了一个搜索查询,该查询将数据显示到其他文本框,但是它不允许我键入数字,并且会自动搜索..请帮助这是我的代码
这是我的代码:
private void txtBarajKod_TextChanged(object sender, EventArgs e) {
MySqlConnection connection = Connection.prevzemiKonekcija();
connection.Open();
try
{
MySqlCommand command;
MySqlDataAdapter adapter;
DataTable tabela;
MySqlDataReader reader;
string query = "SELECT * FROM artikli WHERE barcode like '%" + txtBarajKod.Text + "%'";
command = new MySqlCommand(query, connection);
adapter = new MySqlDataAdapter(command);
tabela = new DataTable();
reader = command.ExecuteReader();
//dataGridView1.DataSource = tabela;
//adapter.Fill(tabela);
if (string.IsNullOrWhiteSpace(txtBarajKod.Text))
return;
if (reader.Read())
{
txtBarajKod.Text = reader.GetString("barcode");
txtNaziv.Text = reader.GetString("ProductName");
txtCena.Text = reader.GetString("SellPrice");
}
else
{
txtBarajKod.Text = "";
txtNaziv.Text = "";
txtCena.Text = "";
txtKolicina.Text = "";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
connection.Close();
}
}
答案 0 :(得分:0)
TextChanged事件。您有几种解决方案:
if(txtBarajKod.Text.Lenght < your_barcode_size){ return; }
使用Keypress方法,如果按Enter键(如果您的输入是条形码读取器,这将是最佳选择,因为它在末尾添加Enter键),然后运行您编写的此检查:
private void KeyDownEvent(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Return)
{
//Place your code here
}
}
答案 1 :(得分:-1)
文本框的初始值为空字符串。设置此初始值时,将触发事件。结果,您的where条件包含子句WHERE barcode like '%%'
,该子句将选择所有内容。
为避免这种情况,请将以下代码添加到方法的开头:
If txtBarajKod.Text = String.Empty Then
Return
End If
尽管,正如其他人在评论中指出的那样,这种设计本质上是不安全的。它为SQL Injection Attacks提供了门户。