You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用rusqlite带参数查询时触发InvalidParameterName错误求助

问题原因与解决方法

错误InvalidParameterName(":floor_number")的核心原因是**named_params!宏中使用了带冒号的参数名**,这不符合rusqlite的参数绑定规则:

  • SQL语句里的命名参数需要带冒号前缀(比如:floor_number),作为占位符标识
  • 但在named_params!宏的键名中,不需要加冒号,直接写参数名即可

修正后的代码如下:

pub fn park_vehicle(
    &self,
    vehicle_entry_time: i64,
    floor_number: i32,
    spot_number: i32,
) -> Result<(), Error> {
    let mut stmt = self.connection.prepare(
        "
        INSERT INTO vehicle(entry_time) VALUES (:entry_time);
        UPDATE parking_spot SET parked_vehicle_id = last_insert_rowid() WHERE floor_number = :floor_number AND spot_number = :spot_number;",
    )?;

    stmt.execute(named_params! {
        "entry_time": vehicle_entry_time,
        "floor_number": floor_number,
        "spot_number": spot_number,
    })?;

    Ok(())
}

简单说,就是把named_params!里的键名前的冒号全部去掉,让宏里的参数名和SQL语句中冒号后的部分完全匹配,rusqlite就能正确识别并绑定参数了。

内容的提问来源于stack exchange,提问作者Eduardo Rodrigues de Farias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:42:02