Мне нужно написать несколько условий для добавления записи в БД! C#

форумчане, решил сделать обработку условий при нажатии кнопки, а именно проверки условий в трёх колонках, а именно room_number, arrival_time и departure_time. Нужно чтобы при при нажатии на кнопку "забронировать", программа смотрела если на этот номер комнаты в диапазоне этой даты, езё запись если нет, тогда происходит занесение в таблицу, а если есть тогда, предупреждение, что бронь этого номера на это число уже есть. Я пытался сделать это циклом с проверкой условий, но у меня увы не получилось. Надеюсь на вашу помощь. Подключение к БД(MS SQL Server) ADO.NET. Код формы ниже:

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Гостиница
{
    public partial class Form4 : Form
    {
        my_main_base1Entities1 objet = new my_main_base1Entities1();
        Point oldPos;
        bool isDragging = false;
        Point oldMouse;
        public Form4()
        {
            InitializeComponent();
        }
        private const int WM_NCHITTEST = 0x84;
        private const int HTCLIENT = 0x1;
        private const int HTCAPTION = 0x2;
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_NCHITTEST:
                    base.WndProc(ref m);
                    if ((int)m.Result == HTCLIENT)
                        m.Result = (IntPtr)HTCAPTION;
                    return;
            }
            base.WndProc(ref m);
        }

        private void Form4_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = objet.booking.ToList();
            dataGridView1.Columns["id"].Visible = false;
            dataGridView1.Columns["client"].Visible = false;
            dataGridView1.Columns["room"].Visible = false;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox1.Visible = true;
            textBox2.Visible = true;
            textBox3.Visible = true;
            textBox4.Visible = true;
            label2.Visible = true;
            label3.Visible = true;
            label4.Visible = true;
            label5.Visible = true;
        }

        private void button6_MouseMove(object sender, MouseEventArgs e)
        {
            panel4.Visible = true;
            panel5.Visible = true;
        }

        private void button6_MouseLeave(object sender, EventArgs e)
        {
            panel4.Visible = false;
            panel5.Visible = false;
        }

        private void button4_MouseMove(object sender, MouseEventArgs e)
        {
            panel2.Visible = true;
            panel3.Visible = true;
        }

        private void button4_MouseLeave(object sender, EventArgs e)
        {
            panel2.Visible = false;
            panel3.Visible = false;
        }

        private void button5_MouseMove(object sender, MouseEventArgs e)
        {
            panel6.Visible = true;
            panel7.Visible = true;
        }

        private void button5_MouseLeave(object sender, EventArgs e)
        {
            panel6.Visible = false;
            panel7.Visible = false;
        }

        private void Form4_MouseDown(object sender, MouseEventArgs e)
        {
            this.isDragging = true;
            this.oldPos = this.Location;
            this.oldMouse = e.Location;
        }

        private void Form4_MouseMove(object sender, MouseEventArgs e)
        {
            if (this.isDragging)
            {
                this.Location = new Point(oldPos.X + (e.X - oldMouse.X), oldPos.Y + (e.Y - oldMouse.Y));
            }
        }

        private void Form4_MouseUp(object sender, MouseEventArgs e)
        {
            this.isDragging = false;
        }

        private void label1_MouseMove(object sender, MouseEventArgs e)
        {
            label1.Capture = false;
            Message m = Message.Create(Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
            WndProc(ref m);
        }

        private void button1_MouseMove(object sender, MouseEventArgs e)
        {
            button1.Capture = false;
            Message m = Message.Create(Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
            WndProc(ref m);
        }

        private void button2_Click(object sender, EventArgs e)
        {

        }

        private void button2_MouseMove(object sender, MouseEventArgs e)
        {
            button2.Capture = false;
            Message m = Message.Create(Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
            WndProc(ref m);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            booking booking = new booking
            {
                client_number = Convert.ToInt32(textBox1.Text),
                room_number = Convert.ToInt32(textBox2.Text),
                arrival_time = Convert.ToDateTime(textBox3.Text),
                departure_time = Convert.ToDateTime(textBox4.Text),
            };
            objet.booking.Add(booking);
            objet.SaveChanges();
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox1.Visible = false;
            textBox2.Visible = false;
            textBox3.Visible = false;
            textBox4.Visible = false;
            label2.Visible = false;
            label3.Visible = false;
            label4.Visible = false;
            label5.Visible = false;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            objet.SaveChanges();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        }
    }
}

Окно программы с заполнением БД


Ответы (1 шт):

Автор решения: Igor Ilyichyov

Вот простой запрос только для arrival_time:

SELCET room FROM имя_таблицы WHERE room_number = 101 AND arrival_time not BETWEEN '2018/05/05' AND '2018/05/06' 

Его можно скомбинировать/изменить исходя из вашего решения, ну например сделать апдейт с этими условиями, ну или сделать проверку занят ли такой номер на эти даты или нет, все зависит от вашего решения.

→ Ссылка