我正在尝试将预订分配到特定房间,但我不断收到以下错误,谁能向我解释为什么会出现此错误? 我添加了“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