1

我尝试使用 rusqlite 执行一个简单的 sqlite 语句,但每次都会出错。

let seconds = 1;

conn.execute(
    "DELETE FROM session WHERE created < DATETIME('now', '?1 seconds')",
    params![seconds],
)?;

返回一个Err(InvalidParameterCount(1, 0)).

如果我使用静态字符串而不是参数,则查询有效。例如

conn.execute(
    "DELETE FROM session WHERE created < DATETIME('now', '1 seconds')",
    params![seconds],
)?;

我如何在那里获取参数?

4

1 回答 1

3

您正在编写?1字符串内部,这不是参数,而是普通的几个字符。因此,当您指定实际参数时,它没有匹配项,因为查询没有任何参数占位符。

你想要这样的东西(未经测试):

let seconds = 1;

conn.execute(
    "DELETE FROM session WHERE created < DATETIME('now', ?1)",
    params![format!("{} seconds", seconds)],
)?;
于 2020-09-15T07:54:36.010 回答