我有一个带有名为File的表的sqlite数据库,它有一个名为FilePath的列,类型为Text。
在该表上有一个条目,其FilePath的值为f9a35e24-bce9-46c8-bbc0-02a005455fe3
(随机GUID的toString)。
如果我在SQLiteStudio上尝试以下查询,则输出该条目。
SELECT FilePath FROM File WHERE FilePath = 'f9a35e24-bce9-46c8-bbc0-02a005455fe3'
但是,使用下面的代码,它使用System.Data.SQLite
外部程序集,它从不检索条目。
SQLiteConnection conn = new SQLiteConnection(connectionString);
SQLiteCommand cmd =
new SQLiteCommand(@"SELECT FilePath FROM File WHERE FilePath = '@Where';", conn);
cmd.Parameters.Add("@Where", DbType.String).Value =
"f9a35e24-bce9-46c8-bbc0-02a005455fe3";
conn.Open();
SQLiteDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("not");
}
我错过了什么吗?
答案 0 :(得分:1)
'
参数周围不需要单引号@where
。你的代码应该是这样的:
SQLiteCommand cmd =
new SQLiteCommand(@"SELECT FilePath FROM File WHERE FilePath = @Where", conn);