C#预订房间查询可用

问题描述 投票:0回答:1

关于我在线预订房间的任务我有问题。

我有3张如下表:

Room

enter image description here

TableBookingHeader

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();
}

那么,我该怎么办?

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

c# sql
1个回答
0
投票

为什么你没有更新那个房间的状态要“预订”或1-0你应该在表房添加一个列 RoomStatus Bit,

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

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

© www.soinside.com 2019 - 2024. All rights reserved.