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);
我有一个带有 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);