以更安全的方式将参数传递给sqlite查询

fykwrbwg  于 2023-03-03  发布在  SQLite
关注(0)|答案(1)|浏览(201)

下面是我从sqlite数据库中获取超过n天/月的数据的方法。下面的方法将用2个参数调用。
例如,
获取10天以前的数据-〉GetOldData(10,"days");
获取2个月以前的数据-〉GetOldData(2,"月");

private DataTable GetOldData(int valueInNumber, string valueInPeriod)
{ 
   sqliteCommand.CommandText = $"SELECT * FROM tblInfo WHERE SavedDate < DATE('Now', 'LocalTime', '-{valueInNumber} {valueInPeriod}')";
   

}

above方法工作正常。但是用上面的格式编写查询是不安全的。所以,我想把这两个params作为sql参数传递给查询。

sqliteCommand.Parameters.AddWithValue("period", 2);
sqliteCommand.Parameters.AddWithValue("term", "days");

已尝试使用上述参数. AddWithValue执行此操作,但条件不适用。
正确的方法应该是什么?

mxg2im7a

mxg2im7a1#

你可以在查询中使用带有占位符的参数,比如@paramName,在这种情况下,你可以连接来自函数的字符串值。

sqliteCommand.CommandText = $"SELECT * FROM tblInfo WHERE SavedDate < DATE('Now', 'LocalTime', @param1)";
string value = valueInNumber + " " + valueInPeriod;
sqliteCommand.Parameters.AddWithValue("@param1", value);

相关问题