C#预订房间查询可用

时间:2017-12-16 11:38:06

标签: c# sql

我在网上预订房间时遇到了问题。

我有3张如下表:

Room

enter image description here

BookingHeader

enter image description here

BookingItem

enter image description here

我对此代码有疑问。这没有错,但房间不能预订其他预订。当房间与booking_id保留时,日期永远不会返回。

for (int countt = 1; countt <= totalcc; countt++)
{
    DataTable dtRoom = new DataTable();
    string Sql = ("SELECT TOP 1 rooms.Room_ID FROM TB_MAS_Room rooms 
WHERE rooms.Room_ID NOT IN(SELECT t1.Room_ID FROM TB_TRA_BookingItem t1 
INNER JOIN TB_TRA_BookingItem t2 ON t1.Room_ID = t2.Room_ID 
INNER JOIN TB_TRA_BookingHeader t3 ON t2.Booking_ID = t3.Booking_ID 
WHERE not ([DateOut] < t3.DateIn or [DateIn] > t3.DateOut))");//new
    SqlCommand sqlCom = new SqlCommand(Sql,con);
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter(sqlCom);
    da.Fill(dtRoom);
    if(dtRoom.Rows.Count>0)
    {
        SqlCommand sc = new SqlCommand("INSERT INTO TB_TRA_BookingItem 
([Booking_ID],[BookingItemID],[Room_ID]) 
VALUES('"+ id +"','"+ countt +"','"+ dtRoom.Rows[0]["Room_ID"].ToString() +"')",con);
        sc.ExecuteNonQuery();
    }
    else
    {
        //if room not avialable
    }
    con.Close();
}

那么,我该怎么办?

请解释我在代码中遗漏的内容。

1 个答案:

答案 0 :(得分:0)

为什么你没有更新那个房间的状态到#34;预订&#34;或1-0 你应该在表室添加一个列
RoomStatus Bit,

当您通过简单查询插入新的预订更新此行时 更新TableName设置RoomStatus = 1其中Room_ID = Get_Room_ID_FromBooking

执行此操作后,您将能够检查房间是否已预订

相关问题