2013-01-08 110 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' –