C# 为什么这个查询用repeat值填充组合框?
我在数据库中有这两个表C# 为什么这个查询用repeat值填充组合框?,c#,sql,winforms,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(t
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;
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);
结果是这样的
cmb.Items.Clear();
dlSize dlObj = new dlSize();
DataTable dt = new DataTable();
dt = dlObj.ReadCatWithProductID(1);
cmb.DisplayMember = "SIZE";
cmb.ValueMember = "Expr1";
cmb.DataSource = dt;
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);
我做错了什么,请引导我。像这样试试
cmb.Items.Clear();
dlSize dlObj = new dlSize();
DataTable dt = new DataTable();
dt = dlObj.ReadCatWithProductID(1);
cmb.DisplayMember = "SIZE";
cmb.ValueMember = "Expr1";
cmb.DataSource = dt;
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);
您的表
tblProductSize
是否可以对同一产品id有多条记录?@shell yes tblProductSize对同一产品有多条记录。因此,您可以针对不同的成本或价格返回多条重复记录。您可以使用distinct for i序列化了一个objectVerify,但必须非常小心,在这两种情况下使用的是同一个数据库。@Shell现在没有复制,但它只拾取两条记录,而不是第三条记录?