SQLite不返回行,但是手动执行查询

时间:2019-01-30 10:10:07

标签: c# sql .net sqlite parameters

我正在SQLite for .NET中执行此查询

string SQL = "SELECT * FROM EmployeeStats where TransactionDateTime = '$date'";

using (SQLiteCommand command = new SQLiteCommand(SQL, DbConnection as SQLiteConnection))
{
    command.Parameters.AddWithValue("$date", DateTime.Now.ToString(DateFormatterString));

    SQLiteDataReader reader = command.ExecuteReader();

    string query = command.CommandText;

    foreach (SQLiteParameter p in command.Parameters)
    {
        query = query.Replace(p.ParameterName, p.Value.ToString());
    }
}

阅读器返回零行。

我正在使用foreach循环生成sql查询。如果我在数据库中手动执行此循环生成的查询,则它将返回正确的行。

当前日期的“数据库”列设置为“文本”。但是我也尝试了DATE和TIMESTAMP并更改了此参数。但是仍然存在相同的问题:

command.Parameters.Add("$date", DbType.DateTime).Value = DateTime.Now.ToString(DateFormatterString);

请参阅以下图像,其中显示了手动执行时其工作正常的情况。

Example

编辑。我简化了示例。

1 个答案:

答案 0 :(得分:1)

SELECT * FROM EmployeeStats where TransactionDateTime = '$date'

应该是

SELECT * FROM EmployeeStats where TransactionDateTime = $date

@date:date,具体取决于SQL变量;最坏的情况也可能是

SELECT * FROM EmployeeStats where TransactionDateTime = ?

如果命名参数不是该提供程序上的“东西”。

'$date'是由5个字符组成的字符串文字:$date-不是值date

的参数