2013-06-26 81 views
0

嗨我正在使用下面的代碼來選擇一些數據,我得到錯誤'名稱'附近的錯誤語法。必須聲明標量變量「@Provider」。任何想法最新怎麼了?謝謝!「名稱」附近的語法錯誤。必須聲明標量變量「@Provider」

cmd = New SqlCommand 
     cmd.Connection = Con 
     cmd.CommandText = "SELECT NPI, [Entity Type Code], [Provider Last Name (Legal Name)] FROM NPIData WHERE ([Provider Last Name (Legal Name)] LIKE @Provider Last Name (Legal Name) + '%'" 
     cmd.Parameters.AddWithValue("@Provider", prefixText) 
     Dim customers As List(Of String) = New List(Of String) 
     Dim reader As SqlDataReader = cmd.ExecuteReader() 

     While reader.Read 
      customers.Add(reader("@Provider").ToString) 

     End While 
     Con.Close() 

     Return customers.ToArray 
+0

,如果你嘗試運行SQL運行查詢? –

+2

通常避免使用空格創建列 –

+0

是的,它運行在SQL – user1342164

回答

2

我覺得你的代碼應該是這樣的:

cmd.CommandText = "SELECT NPI, [Entity Type Code], [Provider Last Name (Legal Name)] FROM NPIData WHERE ([Provider Last Name (Legal Name)] LIKE @Provider + '%'" 
cmd.Parameters.AddWithValue("@Provider", prefixText) 
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) 

End While 
+0

謝謝,我試過,但我得到'%'附近的語法不正確的語法。 – user1342164

+0

好了,修正了那個錯誤謝謝你,但現在在線customers.Add(reader(「@ Provider」)。ToString)它說索引超出範圍? – user1342164

+1

對讀者我想你應該過去列名本身 – qwr

1

參數名稱/密鑰不能包含空格。

cmd.Parameters.AddWithValue("@Provide", prefixText)

這是所需的語法。

+0

如何在列名有空格時執行此操作?我必須更改列名嗎? – user1342164

+1

@ user1342164您將更改參數名稱,而不是列名稱 – qwr

+2

您可以隨意更改參數名稱。它不是強制性的使用相同的列名稱 – Sachin