使用验证执行插入语句时出现 VB.net 语法错误

时间:2021-03-28 19:32:01

标签: vb.net

我正在尝试将预订分配到特定房间,但我不断收到以下错误,谁能向我解释为什么会出现此错误? 我添加了“AddToRoom”函数的代码。

<块引用>

“If”附近的 SQL 逻辑错误:语法错误

Private Sub IbtnAdd_Click(sender As Object, e As EventArgs) Handles ibtnCheckIn.Click
    Dim Result As Integer
    Dim SelectedValue As Integer = CInt(cmbBookingData.SelectedValue)
    Dim selectedRoom As Integer = CInt(cmbRoomNumber.Text)
    Dim d1 = ValidateDates(txtDate1.Text)
    Dim d2 = ValidateDates(txtDate2.Text)

    Try
        Result = AddToRoom(selectedRoom, d1, d2, SelectedValue, "Taken")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
        Exit Sub
    End Try
    Dim dt As DataTable = Nothing
    If Result = 1 Then
        MsgBox("DoubleBooking  NO RECORD HAS BEEN ADDED!")
    Else
        MsgBox("New RECORD HAS BEEN ADDED!")
        Try
            dt = GetBookedRooms()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Exit Sub
        End Try
    End If
    dgvBookedRooms.DataSource = dt

End Sub

  Public Function AddToRoom(brRoomID As Integer, ArrDate As String, DepDate As String, BCustomerID As Integer, Status As String) As Integer

    Dim ValidateSql As String = "SELECT brRoomID, arrivaldate, departuredate 
                            FROM bookedrooms 
                            Join booking on bookedrooms.brBookingID = booking.BookingID
                            WHERE (brRoomID = @Room)
                            AND (arrivaldate  <= @ArrDate ) 
                            AND (departuredate  >= @DepDate);"
    Dim InsertSql As String = "INSERT INTO bookedrooms(brBookingID,brRoomID,Status) 
                            VALUES (@brBookingID,@brRoomID,@Status)"
    Dim CommandSql = $"If Not Exists ({ValidateSql}) {InsertSql}"
    Dim Result As Integer
    Using con As New SQLiteConnection(ConnectionString),
            cmd As New SQLiteCommand(CommandSql, con)
        With cmd.Parameters
            .Add("@Room", DbType.Int32).Value = brRoomID
            .Add("@ArrDate", DbType.String).Value = ArrDate
            .Add("@DepDate", DbType.String).Value = DepDate
            .Add("@brBookingID", DbType.Int32).Value = BCustomerID
            .Add("@brRoomID", DbType.Int32).Value = brRoomID
            .Add("@Status", DbType.String).Value = Status
        End With
        con.Open()
        Result = cmd.ExecuteNonQuery
    End Using
    Return Result


End Function

0 个答案:

没有答案
相关问题