2014-02-18 83 views
0

添加參數我不能夠得到從下面的代碼任何迴應:與sqlcommand.parameters.addwithvalue

using (SqlCommand cmd = new SqlCommand(@"SELECT * FROM users WHERE @parameter LIKE @value", con)) 
{ 
    cmd.Parameters.AddWithValue("parameter", parameter); 
    cmd.Parameters.AddWithValue("value", value); 

    SqlDataReader result = cmd.ExecuteReader(); 

    return result.HasRows; 
} 

獲取假每次。

任何人都知道爲什麼?

+1

首先,SQL Server參數有一個你沒有提供的'@'。但更重要的是 - 你**不能**傳遞列名的參數 - 如果你想這樣做,你需要使用*動態SQL *(所有它的缺點,瑕疵和陷阱) –

回答

0

這是SQL語法不正確

SELECT * FROM users WHERE @parameter LIKE @value 

應該像

SELECT * FROM users WHERE parameter = @parameter LIKE @value 

並添加LIKE參數做到這一點

cmd.Parameters.AddWithValue("@value","%" + value + "%"); 
0

cmd.Parameters.AddWithValue("parameter", parameter);

SqlCommand將推斷parameter等會引用它導致:

SELECT * FROM users WHERE 'xxx' LIKE 'yyy' 

這將是錯誤的。

通過(淨化)string.format/concatenation添加字段名稱。

+0

謝謝你的評論。有沒有優雅的方式來做到這一點? – jond000e

相關問題