我正在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);
请参阅以下图像,其中显示了手动执行时其工作正常的情况。
编辑。我简化了示例。
答案 0 :(得分:1)
SELECT * FROM EmployeeStats where TransactionDateTime = '$date'
应该是
SELECT * FROM EmployeeStats where TransactionDateTime = $date
或@date
或:date
,具体取决于SQL变量;最坏的情况也可能是
SELECT * FROM EmployeeStats where TransactionDateTime = ?
如果命名参数不是该提供程序上的“东西”。
'$date'
是由5个字符组成的字符串文字:$
,d
,a
,t
,e
-不是值date