为什么这个查询用重复值填充组合框?

时间:2014-07-19 09:35:21

标签: c# sql winforms

我在数据库中有这两个表。

tblProductSize(ID,SIZE_ID,PRODUCT_ID,COST_PRICE,SALE_PRICE)
tblSize(SIZE_ID,SIZE)

执行此查询时在查询构建器中

SELECT  tblSize.SIZE_ID AS Expr1, tblSize.SIZE FROM  tblProductSize INNER JOIN   tblSize 
ON tblProductSize.SIZE_ID = tblSize.SIZE_ID WHERE(tblProductSize.PRODUCT_ID = @product )

它显示了确切的值

SIZE_ID    SIZE
1          Small
2          Medium
3          Large

当我使用此代码在C#中运行此查询时

public DataTable ReadCatWithProductID(int id)
{
    DataTable dt = new DataTable();
    try
    {
        conn.Open();// 
        SqlCommand cmd = new SqlCommand("SELECT  tblSize.SIZE_ID AS Expr1, tblSize.SIZE FROM  tblProductSize INNER JOIN   tblSize ON tblProductSize.SIZE_ID = tblSize.SIZE_ID WHERE(tblProductSize.PRODUCT_ID = " + id + ")", conn);
        SqlDataReader dr = cmd.ExecuteReader();
        dt.Load(dr);

    }
    catch (Exception)
    {

        throw;
    }
    finally
    {
        conn.Close();

    } return dt;

并在像这样的组合框中填充值

cmb.Items.Clear();
dlSize dlObj = new dlSize();
DataTable dt = new DataTable();
dt = dlObj.ReadCatWithProductID(1);
cmb.DisplayMember = "SIZE";
cmb.ValueMember = "Expr1";
cmb.DataSource = dt;

它显示了这样的结果

enter image description here

我做错了什么请指导我。

1 个答案:

答案 0 :(得分:1)

试试这个

conn.Open();// 
SqlCommand cmd = new SqlCommand("SELECT Distinct tblSize.SIZE_ID, tblSize.SIZE FROM  tblProductSize INNER JOIN   tblSize ON tblProductSize.SIZE_ID = tblSize.SIZE_ID WHERE(tblProductSize.PRODUCT_ID = " + id + ")", conn);
SqlDataReader dr = cmd.ExecuteReader();
dt.Load(dr);