Member 13073181 Ответов: 1

Сравните введенную дату и дату базы данных


В форме бронирования я хочу сравнить введенную дату в текстовом поле (текстовый режим-это дата) и все даты в базе данных. Таким образом, если есть заказ, уже забронированный в этот день, он будет отображать уже забронированный выбор другой даты, в противном случае он будет продолжать заполнение формы.(в vb. net-visual studio 2012)

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

Protected Sub tbdate_TextChanged(sender As Object, e As EventArgs) Handles tbdate.TextChanged

        Dim adaptor As New SqlDataAdapter
        Dim ds As New DataSet
        Try
            objConn.Open()
            Dim sqlcmd As New SqlCommand("select * from bookorder where=' " & tbdate.Text & "'", objConn)
            sqlcmd.ExecuteNonQuery()
            adaptor.SelectCommand = sqlcmd
            adaptor.Fill(ds)
            If ds.Tables(0).Rows.Count > 0 Then
                Label8.Visible = True
                Label8.Text = "Enter  different date"
            End If
            adaptor.Dispose()
            ds.Clear()

        Catch
            e.ToString()
        Finally
            objConn.Close()
        End Try
    End Sub
End Class

1 Ответов

Рейтинг:
1

OriginalGriff

Не делай этого так! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

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

Преобразование пользовательского ввода в datetime значение типа datetime, используя.TryParse (сообщение об ошибках пользователю), а затем передать это значение dateTime в SQL с помощью параметризованного запроса.
Имейте в виду, что вам может потребоваться преобразовать сохраненное значение базы данных в дату для сравнения, если оно имеет временную составляющую, так как сравнение равенства ожидает точного совпадения по всему значению даты и времени: 2017-03-21 00:00:00.000 не совпадает с 2017-03-21 00:00:00.001 и не будет совпадать! Преобразование его в дату удаляет информацию о времени, чтобы она соответствовала.