2011-10-11 105 views
1

我得到SQLException,而我嘗試選擇一些值。 錯誤:近「@navn」不正確的語法。我環顧四周尋找類似於我的其他問題,但我找不到任何值得我的東西。SQLEXCEPTION附近有語法錯誤##

我的代碼:

public List<Vare> findvareAdvanced(string varenavn) 
    { 
     Vare v = new Vare(); 
     List<Vare> lv = new List<Vare>(); 

     SqlConnection myCon = DBcon.getInstance().conn(); 

     string query = string.Format("SELECT * FROM Vare WHERE Navn LIKE %@navn%"); 

     myCon.Open(); 
     SqlCommand com = new SqlCommand(query, myCon); 
     com.Parameters.AddWithValue("navn", varenavn); 
     SqlDataReader dr = com.ExecuteReader(); 
     if (dr.Read()) 
     { 
      v.Stregkode = dr.GetString(0); 
      v.Navn = dr.GetString(1); 
      v.Pris = dr.GetDecimal(2); 
      v.Varegruppenr = dr.GetInt32(3); 
      lv.Add(v); 

     } 
     myCon.Close(); 




     return lv; 
    } 
+0

看到這個問題的答案:http://stackoverflow.com/questions/664314/c-constructing-paramater-query-sql-like –

回答

2

嘗試,

string query = string.Format("SELECT * FROM Vare WHERE Navn LIKE @navn"); 

com.Parameters.AddWithValue("@navn", "%" + varenavn + "%"); 
+0

THX,即工程:) –

+0

+1想什麼他實際上正在努力去做。您還可以添加'WHERE Navn LIKE( '%' + @navn + '%')'到你的答案;對於他不能改變參數值的情況。 –

0

如果你想字符串的直譯,字符串前加一個@符號。這將有助於處理轉義字符

This問題也可能有助於

string query = string.Format(@"SELECT * FROM Vare WHERE Navn LIKE %@navn%"); 
0

忘了「?

string query = string.Format("SELECT * FROM Vare WHERE Navn LIKE '%@navn%' ");