如果数据库表中存在数据,如何从组合框中删除数据

时间:2018-02-04 09:42:26

标签: c# sql-server combobox

我有一种情况,我必须为客户分配房间号码,并从列表中删除分配的房间号码。

我想我会通过搜索数据库表来完成。如果程序在数据库中找到任何已分配的房间号,则会从组合框中删除它。

我正在使用此代码:

con.Open();

string selectSQL = "SELECT Room_Number FROM Reservation WHERE Reservation_ID > 0";

SqlCommand cmd = new SqlCommand(selectSQL, con);

SqlDataReader rd = cmd.ExecuteReader();

while (rd.Read())
{
    string RoomNumber = rd.GetString(0);

    foreach (string NumberOfRoom in RoomNumber)
    {
        if (NumberOfRoom == cbRoomNumber.Text)
        {
            cbRoomNumber. 
        }
    }
}

rd.Close();
con.Close(); 

但我不知道接下来该做什么。

请提供任何指导。

3 个答案:

答案 0 :(得分:0)

不要将DB查询逻辑与外部发生的任何事情混合在一起。你真正需要的是某种RoomRepository,你可以做roomRepo.IsFree(any_parameter_goes_here)。所以: if (roomRepo.IsFree(...)) { }为您提供了一种很好的方法来改变给定点的执行,而无需将SQL硬编码到方法实现中。

我不太确定我的答案是你所寻求的,但这对于更清洁的解决方案来说无疑是一个很好的起点。

答案 1 :(得分:0)

我认为你打算这样做

if (NumberOfRoom == cbRoomNumber.Text)
    {
       cbRoomNumber.Items.Remove(NumberOfRoom)
    }

答案 2 :(得分:0)

谢谢大家。我制作了逻辑。 在这里。

 con.Open();

        string selectSQLR = "SELECT Room_Number FROM Reservation where Reservation_ID > 0";

        SqlCommand cmdR = new SqlCommand(selectSQLR, con);
        SqlDataReader rdR;
        rdR = cmdR.ExecuteReader();

          while (rdR.Read())
            {
                string RoomNumber = rdR.GetString(0);

                cbRoomNumber.Items.Remove(RoomNumber);
            }

        rdR.Close();
        con.Close();