c#选择数据表中包含特定数据的所有记录

时间:2017-12-19 07:49:18

标签: c#

我计划选择数据表中包含“狗”的所有行。在第2列中没有使用关键字" WHERE"在我的查询。我的猜测是尝试使用DataRow和foreach,但我不知道从哪里开始。我在数据表中填写了来自我的数据库的记录,这是我迄今为止所做的。

   using(MySqlConnection con = new MySqlConnection(constring))
   {
   MySqlDataAdapter adp = new MySqlDataAdapter("SELECT * FROM table1",con);
   DataTable dt = new DataTable();
   adp.Fill(dt);
   adp.Dispose();
   }

这就是我的数据表的样子:

   Column1 Column2  Column3
   1       Dog      Labrador
   2       Dog      Chowchow
   3       Cat      Persian
   4       Cat      Stubby
   5       Dog      German Shepherd

5 个答案:

答案 0 :(得分:1)

使用何处区分:

   using(MySqlConnection con = new MySqlConnection(constring))
   {
   MySqlDataAdapter adp = new MySqlDataAdapter("SELECT * FROM table1,con);
   DataTable dt = new DataTable();
   adp.Fill(dt);
   IEnumerable<DataRow> query = adp.Where(x => x.Column2 == 'dog').ToList();

   DataTable filteredRows = query.CopyToDataTable<DataRow>();

   adp.Dispose();
   }

答案 1 :(得分:1)

您可以通过修改选择查询来使用数据适配器填充表时过滤记录:

SELECT * FROM table1 WHERE  Column2='Dog'

和第二种方法如果您需要稍后过滤,请使用此方法 - Creating a DataTable From a Query (LINQ to DataSet)

List<DataRow> result = dt.AsEnumerable().Where(row=> row.Field<string>("Column2") = "Dog").ToList();

您可以使用DataView过滤记录,并使用RowFilter属性,如下所示:

// Create a DataView
 DataView dv = new DataView(dt);
 // Filter by an expression. 
 dv.RowFilter = "Column2 = 'Dog'";
DataTable newTable = view.ToTable();

<强>参考文献:
Creating a DataTable from a DataView

答案 2 :(得分:1)

您正在寻找SQL WHERE子句。始终使用SqlParameter或类似内容将变量插入查询中(如果用户提供了参数值,则阻止潜在SQL injection attacks。)

string genusInput = "Dog"; // might be provided by user input later on

DataTable result = new DataTable();

using (MySqlConnection con = new MySqlConnection(constring)) {

    const string query = "SELECT * FROM table1 WHERE Column2 = @genus";    
    var adp = new MySqlDataAdapter(query, con);
    adp.SelectCommand.Parameters.AddWithValue("@genus", genusInput);
    adp.Fill(result);
    adp.Dispose();
}

答案 3 :(得分:1)

    using(MySqlConnection con = new MySqlConnection(constring))
   {
      MySqlDataAdapter adp = new MySqlDataAdapter("SELECT * FROM table1",con);
      DataTable dt = new DataTable();
      adp.Fill(dt);
      adp.Dispose();

      DataRow[] dr=dt.select(“Column2=‘Dog’”);
  }
  

https://msdn.microsoft.com/en-us/library/det4aw50(v=vs.110).aspx

答案 4 :(得分:0)

在查询中创建where语句,如下所示

   MySqlDataAdapter adp = new MySqlDataAdapter("SELECT * FROM table1 WHERE Column2='Dog'",con);