system.data.sqlite 查询无效

query on system.data.sqlite not working

我有一个带有 table 名为 File 的 sqlite 数据库,它有一个名为 FilePath 的列,类型为 Text。

在那 table 上有一个条目,其 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");
}

我是不是漏掉了什么?

您不需要在 @where 参数周围加上单引号 '。你的代码应该是这样的:

SQLiteCommand cmd = 
new SQLiteCommand(@"SELECT FilePath FROM File WHERE FilePath = @Where", conn);