что не так с моим кодом? использование sql server 2008

#vb.net #sql-server-2008

#vb.net #sql-server-2008

Вопрос:

что не так с моим кодом?

 Dim x As Integer
    Dim sql As String
    ModConnectDb.OpenDatabase()
    conn.Open()
    For x = 200 To 208
        sql = "select * from ttransaction where no_room= 'x' and status= 'checkin '"
        cmd = New SqlCommand(sql, conn)
        dtReader = cmd.ExecuteReader
        If dtReader.HasRows = False Then
            cbo_numberroom.Items.Add(x)
        End If
        dtReader.Close()
    Next
  

Я делаю заявку для больницы. VIP room имеет номера комнат с 200 по 208
цель этого кода. если выбран переключатель, который является VIP, он проверит, есть ли номер 200 уже в базе данных и соответствует ли статус регистрации номера. если да, то число 200 больше не появится в выпадающем списке.

но результаты этого кода. хотя 200 было заполнено, все еще отображается в выпадающем списке для выбора номера комнаты, я действительно надеюсь, что это поможет

Спасибо перед

Ответ №1:

  1. Вы не используете параметризованные запросы
  2. После ‘checkin’ есть пробел, которого может не быть в базе данных, поэтому совпадения нет
  3. Вы не используете номер комнаты в качестве параметра SQL-запроса
  4. Самое главное: вы не говорите нам, в чем ошибка!

Я вижу, что вы пишете no_room='x' . Это проверяет, есть ли символ ‘x’ в столбце no_room вашей базы данных.

Если вы хотите проверить, есть ли номер с номером x уже в базе данных, вам следует использовать

 cmd = New SqlCommand("SELECT * FROM tTransaction WHERE no_room = @roomNumber AND status = 'checkin'", conn)
cmd.Parameters.AddWithValue("@roomNumber", x)
...
  

Комментарии:

1. ошибки нет. но результаты этого кода. хотя 200 были заполнены, они все еще отображаются в выпадающем списке для выбора номера комнаты. можете ли вы привести мне пример для № 3, пожалуйста?

2. @roomNumber это имя поля в базе данных или произвольное именование?

3. Я пробовал. тем не менее, результаты. кстати, я поместил их в событие CheckedChanged

4. извините за мою ошибку. влюбленный код уже запущен. большое спасибо, друг