经过测试的sql查询无法在vb.net中运行

时间:2015-11-27 19:08:48

标签: sql-server vb.net

我正在尝试在从SQL Server 2008 r2数据库填充的DataGridView的2列上设置自动完成。我已经测试过该代码的先前版本,直到将NULL值传递到数据库中。该查询工作正常

  

“SELECT DISTINCT”&专栏& “来自dbo.Purchases”

我在“SQL Server Management Studio”中测试了我的新查询并获得了我期望的结果,与之前相同,减去了Null,但是当我将新查询放入代码时,我得到了一个例外。

  

System.Data.SqlClient.SqlException(0x80131904):关键字“NULL”附近的语法不正确。

Private Function fillACList(Column As String) As AutoCompleteStringCollection
    Dim temp As AutoCompleteStringCollection
    temp = New AutoCompleteStringCollection
    Using acConn As SqlConnection = New SqlConnection("Data Source=xxx.xxx.xxx.xxx,xxxx;Trusted_Connection=Yes;database=Purchasing_DB")
        Try
            acConn.Open()
        Catch ex As Exception
            MessageBox.Show(ex.ToString() & " FillACList")
        End Try
        Using cbCommand As SqlCommand = New SqlCommand("SELECT DISTINCT " & Column & " FROM dbo.Purchases WHERE " & Column & " IS NOT NULL", acConn)
            Dim reader As SqlDataReader = cbCommand.ExecuteReader()
            While reader.Read()
                If reader.HasRows Then
                    Try
                        Dim input As String
                        input = reader.GetString(0)
                        temp.Add(input)
                    Catch ex As Exception
                        MessageBox.Show(ex.ToString() & " CheckDB")
                    End Try
                End If
            End While
            If (acConn.State = ConnectionState.Open) Then
                acConn.Close()
            End If
        End Using
    End Using
    Return temp
End Function

连接字符串为安全起见进行了编辑。

2 个答案:

答案 0 :(得分:0)

您应该检查SqlCommand中的实际查询是什么,并在那里找到问题。

答案 1 :(得分:0)

您是否验证过去的参数列是什么?因为你正在使用"&" vb.net可能不会显示错误。使用" +"相反,因为"&"做了很多转换。