【发布时间】:2013-07-09 13:50:28
【问题描述】:
我正在尝试使用自动完成 ajax 控件搜索姓氏和名字。但我收到错误 An expression of non-boolean type specified in an context specified in an context where a condition is expected, near ','。知道我做错了什么吗? Words(0) 行出现错误。 谢谢!
Public Function GetCompletionList(prefixText As String, count As Integer, ByVal contextKey As String) As String()
Try
Dim words As String() = prefixText.Split(New Char() {","c})
Dim Con As SqlConnection
Dim cmd As SqlCommand
Con = New SqlConnection
Dim test As String
test = contextKey
Con.ConnectionString = ""
Con.Open()
cmd = New SqlCommand
cmd.Connection = Con
cmd.CommandText = "SELECT NPI, [Entity Type Code], [Provider Last Name (Legal Name)], [Provider First Name],[Provider First Line Business Mailing Address], [Provider Business Mailing Address City Name], [Provider Business Mailing Address State Name], [Provider Business Mailing Address Postal Code] FROM NPIData WHERE ([Provider Business Mailing Address State Name] = @State) AND ('" & words(0) & "','" & words(1) & "' LIKE N'%' + @Provider + N'%') ORDER BY [Provider First Name]"
cmd.Parameters.AddWithValue("@Provider", prefixText)
cmd.Parameters.AddWithValue("@State", contextKey)
Dim customers As List(Of String) = New List(Of String)
Dim reader As SqlDataReader = cmd.ExecuteReader()
While reader.Read
customers.Add(reader("Provider Last Name (Legal Name)").ToString + ", " + reader("Provider First Name").ToString + " " + reader("Provider First Line Business Mailing Address").ToString + " " + reader("Provider Business Mailing Address City Name").ToString + ", " + reader("Provider Business Mailing Address State Name").ToString + " " + reader("Provider Business Mailing Address Postal Code").ToString + " " + reader("NPI").ToString)
End While
Con.Close()
Return customers.ToArray
Catch ex As Exception
End Try
End Function
【问题讨论】:
-
您的代码会产生这样的查询:
SELECT ... FROM NPIData WHERE ([Provider Business Mailing Address State Name] = @State) AND ('word_1','word_2' LIKE N'%' + @Provider + N'%') ORDER BY [Provider First Name](为简洁起见省略了选择列表)查看带有LIKE的部分。那是无效的 SQL。您实际上想在这里实现什么目标? -
你能打印分配给 cmd.CommandText 的文本吗?
-
我刚刚尝试再次运行它并且索引超出了数组的范围。
-
我正在尝试搜索姓氏、名字。不知何故,我需要拆分“,”,因此为什么我有 Dim words As String() = prefixText.Split(New Char() {","c})