2015-11-07 57 views
1

所以我想我的代碼運行時,我得到這個錯誤:SQLEXCEPTION了未處理的C# - 在System.Data.dll中

類型的異常「System.Data.SqlClient.SqlException」發生在System.Data.dll,但未在用戶代碼中處理 附加信息:「b」附近的語法錯誤。

的代碼看起來是這樣的:

  string query = "select a.Navn from Ejer a" + 
         "INNER JOIN SlipsEjer b ON a.Id = b.EjerId" + 
         "Where b.SlipsId = SlipsId"; 

     using (connection = new SqlConnection(connectionString)) 
     using (SqlCommand command = new SqlCommand(query, connection)) 
     using (SqlDataAdapter adapter = new SqlDataAdapter(command)) 
     { 
      command.Parameters.AddWithValue("@SlipsId", SlipsLB.SelectedValue); 

      DataTable ejerTable = new DataTable(); 
      adapter.Fill(ejerTable); 

      EjerLB.DisplayMember = "Navn"; 
      EjerLB.ValueMember = "Id"; 
      EjerLB.DataSource = ejerTable; 
     } 

我不知道爲什麼。我已經試過,並通過在SQL中新的查詢運行它,它工作正常那裏..

真的希望你們能幫助!謝謝

回答

2

在每行的末尾添加一個空格。還要爲參數添加@符號。

string query = "select a.Navn from Ejer a " + 
       "INNER JOIN SlipsEjer b ON a.Id = b.EjerId " + 
       "Where b.SlipsId = @SlipsId"; 

有人建議在評論中使用逐字字符串。以下是逐字字符串的示例。您可以輕鬆地從Management Studio複製您的查詢。儘管我更喜歡使用存儲過程。

string query = @" 
select a.Navn from Ejer a 
INNER JOIN SlipsEjer b ON a.Id = b.EjerId 
Where b.SlipsId = @SlipsId 
"; 
+0

非常感謝! 是的,我有一個@之前,一定是誤刪了它! 但不知道空間會做詭計!謝謝@ Handoko.Chen –

+0

同樣使用逐字字符'@'將對避免這些錯誤有很大的幫助。 – Steve

+0

如果你不添加空格,它將會是這樣的:'從Ejer aINNER JOIN SlipsEjer b選擇a.Navn在a.Id = b.EjerIdWhere b.SlipsId = @ SlipsId'上。 – Han

相關問題