如何从表中过滤数据并在DataGridView中显示它?

时间:2015-12-08 12:46:35

标签: c#

我是C#和SQL的新手。

screenshot

如屏幕截图所示,我试图从多个表中过滤数据并将其插入DataDridView。 我有3张桌子:

  • 订单。

  • ORDER_DETAILS

  • 产品。

我想过滤order_Id 2(Sam),我想根据他的order_ID显示他在DataGridView中订购的内容。我想显示他的数据如下:

  • 客户名称
  • 产品名称
  • 数量

根据我的代码,我知道如何显示“Order_details”表,但我不知道如何将Sam的订单详细信息显示到DataGridView中。我想要从3个表中提取Sam的数据并在DataGridView中显示它。 请帮我解决这个问题。谢谢

private void button1_Click(object sender, EventArgs e)

    {   // display Order_details table into DataGridView

        SqlConnection con = new SqlConnection("Data Source=PCN11-TOSH;Initial Catalog=mydb;Integrated Security=True");
        con.Open();
        SqlCommand cm = new SqlCommand("SELECT *FROM Order_details");
        cm.Connection = con;

        SqlDataAdapter da = new SqlDataAdapter(cm);
        DataTable dt = new DataTable();
        da.Fill(dt);

        con.Close();

        dataGridView1.DataSource = dt;

}

2 个答案:

答案 0 :(得分:1)

您需要使用join然后select data databasebind来使用它。

select Distinct o.customer_name,od.qty,p.product_name,p.price from orders o
inner join order_details od on o.orderid=od.orderid
inner join products p on p.productid=od.product_id
where o.order_id=1

答案 1 :(得分:1)

哦,我并不羞于给出作业答案。这是一个SQL问题,而不是C#问题。如果你想用代码来解决这个问题,我实现了一个ORM并使用LINQ将数据整形到网格中。由于您的原始问题仅涉及SqlAdapter,因此答案在于查询。

private void button1_Click(object sender, EventArgs e)

    {   // display Order_details table into DataGridView

        SqlConnection con = new SqlConnection("Data Source=PCN11-TOSH;Initial Catalog=mydb;Integrated Security=True");
        con.Open();
        SqlCommand cm = new SqlCommand(@"SELECT o.customer_name, p.product_name, d.Qty, p.price FROM Orders
                                         JOIN order_details d ON d.order_ID = o.order_ID
                                         JOIN products p ON p.product_ID = d.product_ID");
        cm.Connection = con;

        SqlDataAdapter da = new SqlDataAdapter(cm);
        DataTable dt = new DataTable();
        da.Fill(dt);

        con.Close();

        dataGridView1.DataSource = dt;