2013-01-08 155 views
3

這裏是我的代碼SQLite準備語句不工作SQLiteDateReader?

SQLiteConnection connection = new SQLiteConnection("Data Source=userData.dat;version=3;"); 
connection.Open(); 

SQLiteCommand cmd = connection.CreateCommand(); 

cmd.CommandText = "SELECT * FROM tags WHERE tags_tags LIKE '%@tags_tags%' ORDER by tags_id DESC LIMIT 0, 100"; 
cmd.Parameters.Add("@tags_tags", DbType.String); 
cmd.Parameters["@tags_tags"].Value = tags; 


SQLiteDataReader reader = cmd.ExecuteReader(); 
var _sql = cmd.CommandText; 
MessageBox.Show(_sql);//still shows "SELECT * FROM tags WHERE tags_tags LIKE '%@tags_tags%' ORDER by tags_id DESC LIMIT 0, 100" 

我也用cmd.Parameters.AddWithValue但不工作的...
哪裏錯了嗎?

+0

你嘗試捕獲所有異常? – KMC

+0

沒有任何錯誤。唯一的問題是我的查詢仍然沒有準備好 –

+0

在命令文本中看不到具有替換變量的完整查詢。您必須啓動SQL Profiler並記錄發送到服務器的查詢。在那裏你會有完全相同的查詢,但也有定義的變量。 – KeepAlive

回答

3

串聯參數在你的字符串,如

LIKE '%' || @tags_tags || '%' 

你包圍單引號的參數,從而使得它的值。刪除單引號並連接參數值的百分號。

LIKE @tags_tags 

,並在您的參數,

cmd.Parameters["@tags_tags"].Value = '%' + tags + '%'; 
+0

真的真的很好!這正是我想要的:x –

+0

不客氣':D' –