Asp.net 不存在冒号附近的语法不正确

Asp.net 不存在冒号附近的语法不正确,asp.net,sql-server,visual-studio,Asp.net,Sql Server,Visual Studio,尝试在Visual Studio中使用ASP.NET调试此代码时出现此错误。我有一个房间和一个预订表格,这两个表格都填充了数据。该语句的思想是从表单(vb变量arriveDate和departDate)和房间大小(vb变量bedno)中获取用户定义的日期,并返回与用户选择的房间大小匹配的所有可用房间,以及返回在用户选择的日期之间未预订的房间 出于测试目的,我已经临时给出了变量值。然后,我使用结果在表单页面上填充网格 代码如下: Dim bedno As Integer = 3 Dim arriv

尝试在Visual Studio中使用ASP.NET调试此代码时出现此错误。我有一个
房间
和一个
预订
表格,这两个表格都填充了数据。该语句的思想是从表单(vb变量
arriveDate
departDate
)和房间大小(vb变量
bedno
)中获取用户定义的日期,并返回与用户选择的房间大小匹配的所有可用房间,以及返回在用户选择的日期之间未预订的房间

出于测试目的,我已经临时给出了变量值。然后,我使用结果在表单页面上填充网格

代码如下:

Dim bedno As Integer = 3
Dim arriveDate As Date = Date.FromOADate(12 / 8 / 2017)
Dim departDate As Date = Date.FromOADate(17 / 8 / 2017)

Using con As New SqlConnection(constr)
    Using cmd As New SqlCommand("SELECT RoomTable.RoomNumber, RoomTable.RoomBeds, RoomTable.RoomPricePerNight, BookingTable.RoomNumber, BookingTable.ArriveDate, BookingTable.DepartDate FROM RoomTable LEFT JOIN BookingTable ON ROoomTable.RoomNumber=BookingTable.RoomNumber WHERE(BookingRoomTable.RoomBeds = " & bedno & ") AND (" & arriveDate & "NOT BETWEEN BookingTable.ArriveDate AND BookingTable.DepartDate) AND (" & departDate & "NOT BETWEEN BookingTable.ArriveDate AND BookingTable.DepartDate)")
        Using sda As New SqlDataAdapter()
            cmd.Connection = con
            sda.SelectCommand = cmd

            Using dt As New DataTable()
                sda.Fill(dt)
                GridView1.DataSource = dt
                GridView1.DataBind()
            End Using
         End Using
      End Using
    End Using
End Sub
所有这些都是一个错误的说法

“:”附近的语法不正确


我无法解决问题。非常感谢您提供的任何帮助。

使用参数。不要使用带值的查询字符串。您可能会遇到意外的语法错误。@GordonLinoff您有什么建议?对参数不太熟悉。Google vb.net参数化查询“arriveDate”,将其转换为字符串时,将得到冒号。您应该检查生成的字符串,然后才能看到它。是的,一定要使用参数,不要像这样编写SQL代码。使用参数。不要用值填充查询字符串。您遇到了意外的语法错误。@GordonLinoff您有什么建议?不太熟悉参数。Google vb.net参数化查询“arriveDate”,将其转换为字符串时会得到冒号。您应该检查生成的字符串,然后才能看到它。是的,一定要使用参数,不要像这样编写SQL代码。