Как я могу обновить свою базу данных с помощью al oop, проверив, соответствует ли имя столбца имени кнопки? - PullRequest
0 голосов
/ 22 апреля 2020

Итак, я делаю систему резервирования мест для школьного проекта, и я застрял. Я точно объясню, что я пытаюсь сделать. Я создал эту форму:

Схема бронирования мест

Как вы можете видеть, я создал схему мест. Все сиденья кнопки. Я также создал локальную базу данных SQL с SeatID (который точно соответствует названиям кнопок) и доступностью (либо True, либо False).

Что я хотел сделать, это позволить пользователю выбрать место (места) (который становится зеленым после нажатия на нее), и всякий раз, когда пользователь нажимает кнопку «ОК», места резервируются, что означает, что я хочу, чтобы доступность в моей базе данных соответствовала имени кнопки и, таким образом, SeatID стал ложным (то есть место зарезервировано). После повторного запуска программы зарезервированные места должны быть красными в начале, то есть они не могут быть зарезервированы.

Так что в основном мне удалось все это сделать; Моя база данных работает, зарезервированные места выделяются красным всякий раз, когда я запускаю программу и т. Д. c.

Единственное, что я не могу получить - это обновление базы данных с зарезервированными местами.

private void OK_Click(object sender, EventArgs e)
        {
            con.Open();

            SqlCommand command;
            SqlDataAdapter adapter = new SqlDataAdapter();
            String sql = "";

            command = new SqlCommand(sql, con);

            foreach (Button button in buttons)
            {

                if (button.BackColor == Color.Green)
                {
                    sql = "UPDATE Seats SET Availability='" + "False" + "'WHERE SeatID=" + button.Name;
                    adapter.UpdateCommand = new SqlCommand(sql, con);
                    adapter.UpdateCommand.ExecuteNonQuery();

                }
            }

            command.Dispose();
            con.Close();

        }

Выше Вы видите мой код, где я пытаюсь обновить базу данных. Я составил список всех кнопок, называемых «кнопками», и приведенный выше код просматривает все кнопки и проверяет, являются ли они зелеными или нет (нажата зеленая ==, поэтому готова к резервированию). Это должно произойти, когда я нажимаю кнопку «ОК». Когда я запускаю это, я получаю это сообщение об ошибке:

Сообщение об ошибке

Итак, что я делаю не так? Как мне обновить базу данных, проверив, соответствует ли SeatID названию кнопки?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Здесь я прикрепляю свою базу данных:

Datatable

Данные

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вы должны использовать параметры в вашем запросе SQL.

  sql = "UPDATE Seats SET Availability= @Availabe WHERE SeatID = @SeatID" ;
  adapter.UpdateCommand.Parameters.AddWithValue("@Available", false); //I assume that your Availibility column is a BIT type. 


  //If a varchar column for exemple, you can use 
  //adapter.UpdateCommand.Parameters.AddWithValue("@Available", "False"); //But, you should use a bit column instead.


  adapter.UpdateCommand.Parameters.AddWithValue("@SeatID", button.Name);
  adapter.UpdateCommand = new SqlCommand(sql, con);
  adapter.UpdateCommand.ExecuteNonQuery();

Чтобы добавить параметры в вашу команду SQL, вы можете взглянуть на это: https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.parameters?view=netframework-4.8

0 голосов
/ 22 апреля 2020

Вы пробовали эту команду;

sql = "UPDATE Seats SET Availability='False' WHERE SeatID=" + button.Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...