从SQL Server的组合框自动添加值中删除重复项

本文关键字:删除 添加 Server SQL 组合 | 更新日期: 2023-09-27 18:07:05

我使用SQL Server 2012,并在c#中与VS2013开发Windows窗体应用程序。我有代码自动添加项目从SQL Server到组合框:

void comboboxadd()
{
    SqlConnection cnn = new SqlConnection(global::BeautyShop.Properties.Settings.Default.BeautyMaConnectionString);
    cnn.Open();
    SqlCommand cmm = new SqlCommand("select SupName from MPham group by SupName order by SupName asc", cnn);
    try
    {
        SqlDataReader dr = cmm.ExecuteReader();
        while (dr.Read())
        {
            comboBox2.Items.Add(dr["SupName"]);
        }
        dr.Close();
        dr.Dispose();
    }
    catch (Exception ex)
    {
    }
}

我的问题是:当我在SupName列(不是主键)上有相同的项目时,项目也将被添加到组合框中。

的例子:

SupName   
-----------
ABC  
Joli  
ABC  
Str  
Joli  

组合框的项目列表是:

-----------    
ABC  
Joli  
ABC  
Str  
Joli  
-----------  

我希望我的组合框列表是这样的:

ABC  
Joli  
Str  

我该怎么做呢?
感谢支持

从SQL Server的组合框自动添加值中删除重复项

通过链接SQL查询来选择不同的项,就像这样

SqlCommand cmm = new SqlCommand(
   @"select Distinct SupName 
       from MPham 
   group by SupName 
   order by SupName asc", cnn);

你只需要改变你的查询:

不需要使用group by

select distinct SupName from MPham order by SupName asc

参见About Sql Distinct Here

你也可以试试这个

    void comboboxadd()
    {
        SqlConnection cnn = new SqlConnection(global::BeautyShop.Properties.Settings.Default.BeautyMaConnectionString);
        cnn.Open();
        SqlCommand cmm = new SqlCommand("select SupName from MPham group by SupName order by SupName asc", cnn);
        try
        {
            SqlDataReader dr = cmm.ExecuteReader();
            while (dr.Read())
            {
                //Check here if item does not exist then add it.
                if(!comboBox2.Items.Contains(dr["SupName"]))
                     comboBox2.Items.Add(dr["SupName"]);
            }
            dr.Close();
            dr.Dispose();
        }
        catch (Exception ex)
        {
        }
    }