Member 10964782 Ответов: 1

Как я могу читать данные из SQL в VB.NET использование sqlreader


я стараюсь добиться следующего сценария.
когда пользователь нажимает кнопку 5,он получает номер таблицы и время из базы данных, а затем в зависимости от разницы во времени меняет цвет кнопки 1, кнопки 2.
у меня также есть база данных с таблицами и столбцами времени.
следующий код дает мне ошибку "specific cast is not valid".
спасибо Вам за любую помощь

Что я уже пробовал:

Dim d1 As DateTime = DateTime.Parse(ToolStripStatusLabel1.Text)

Dim connString As String = "server=DESKTOP-69QA9LH\SQLEXPRESS; database=servicedb; integrated security=true"
Using conn As New SqlConnection(connString)
    conn.Open()

    Dim query As String
    query = "select time,tableno from restaurant "
    Using command = New SqlCommand(query, conn)
        Using reader = command.ExecuteReader
            While reader.Read()

                REM
                Dim time As DateTime = reader.GetDateTime(0)
                REM
                Dim tableNo As Int32 = reader.GetInt32(1)

                Dim diff As Long = DateDiff(DateInterval.Minute, time, d1)

                If tableNo = 2 AndAlso diff >= 5 Then
                    Button3.BackColor = Color.LawnGreen
                End If
                If tableNo = 2 AndAlso diff >= 10 Then
                    Button3.BackColor = Color.LawnGreen
                End If
                If tableNo = 2 AndAlso diff >= 15 Then
                    Button3.BackColor = Color.LawnGreen
                End If
                If tableNo = 1 AndAlso diff >= 5 Then
                    Button1.BackColor = Color.Brown
                End If
                If tableNo = 1 AndAlso diff >= 10 Then
                    Button1.BackColor = Color.Brown
                End If
                If tableNo = 1 AndAlso diff >= 15 Then
                    Button1.BackColor = Color.Brown
                End If
            End While
        End Using
    End Using
End Using

1 Ответов

Рейтинг:
2

OriginalGriff

На первый взгляд - и это все, что может быть, у нас нет доступа к вашим данным - есть два места, где вы можете получить эту ошибку:

Dim d1 As DateTime = DateTime.Parse(ToolStripStatusLabel1.Text)
Если пользователь вводит плохую дату.
Решение: используйте значение datetime.Метод tryparse[^] вместо этого и сообщайте о проблемах пользователю teh.

Или:
Dim time As DateTime = reader.GetDateTime(0)
REM
Dim tableNo As Int32 = reader.GetInt32(1)
Если ваша БД не содержит того, что вы считаете нужным, или содержит нулевые значения в любом столбце.
Решение: проверьте свою базу данных и посмотрите, что именно там находится. time должен быть столбец DATETIME и не содержать нулей. tableno должно быть INT и не содержать нулей.