【问题标题】:OleDB Select StatementOleDB 选择语句
【发布时间】:2016-05-03 16:48:36
【问题描述】:

我的程序中有一个搜索按钮。我想要的是每次搜索时我都会输入lastname,当lastname等于数据库中的任何lastname时,该人的firstnamelastname将显示在@ 987654326@ 并且每当我单击listbox 中的结果时,此人的详细信息将显示在textboxes 中。问题是当有相同姓氏的人时,他们的名字是唯一列出的,但是当我点击名字时,textboxes 中会出现相同的详细信息。

请帮忙。

这是我的代码:

    connection.Open();
    OleDbCommand select = new OleDbCommand();
    select.Connection = connection;
    select.CommandText = "Select * From Accounts Where Lastname  = '" + searchtb.Text + "'";
    OleDbDataReader reader = select.ExecuteReader();
    while (reader.Read())
    {
        listBox1.Items.Add(reader[1].ToString() + "," + reader[2].ToString());
    }
    connection.Close();

【问题讨论】:

  • 顶部的一件事是错误的。它对 SQL 注入攻击完全开放认真考虑参数化该输入。
  • 除了容易发生 SQL 注入。如果你想找到只有部分姓氏的人,你应该使用“Select * From Accounts Where Lastname Like '”+ searchtb.Text +“%'”

标签: c# .net winforms oledb


【解决方案1】:

此代码中没有任何错误,您的错误可能在您的 listbox_events 上。

显示列表框部分的代码。

【讨论】:

    【解决方案2】:
     cFat_items2 = new OleDbDataAdapter("
          SELECT COUNT(Fat_Items.i_num) AS Count_i_num, Fat_Items.i_num, g.i_num 
          FROM Fat_Items INNER JOIN Fat_Items AS g ON Fat_Items.fat_nr = g.fat_nr 
          WHERE Fat_Items.i_num = '" + this.kLDataSet.Fat_Items.Rows[i].ItemArray[0].ToString() + "' 
          AND g.i_num = '" + this.kLDataSet.Fat_Items.Rows[j].ItemArray[0].ToString() + "' 
          GROUP BY Fat_Items.i_num, g.i_num HAVING COUNT(Fat_Items.i_num)>='" + Support + "'", con);
    
     cFat_items2.Fill(dFat_items2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2013-06-22
      • 2011-06-09
      • 2011-07-12
      • 2015-01-28
      • 2011-07-05
      相关资源
      最近更新 更多