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

如何结合System.Data.IDbCommand参数使用SQLite的RETURNING关键字

解决SQLite INSERT加RETURNING关键字并通过ExecuteScalar()获取自增ID的问题
  • 首先修正SQL语句结构,RETURNING id是INSERT语句的一部分,必须紧跟在VALUES子句之后,正确的语句格式如下:

    INSERT INTO TABLE (column1, column2, ...)
    VALUES (?, ?, ...)
    RETURNING id
    
  • 直接修改原有命令的CommandText,无需新建命令:
    假设你原本的代码是这样的:

    SQLiteCommand command = new SQLiteCommand("INSERT INTO TABLE (column1, column2) VALUES (?, ?)", connection);
    command.Parameters.AddWithValue("@val1", value1);
    command.Parameters.AddWithValue("@val2", value2);
    

    只需在原命令文本后追加RETURNING id即可,参数会被保留:

    command.CommandText += " RETURNING id";
    // 执行后获取自增ID
    int newId = Convert.ToInt32(command.ExecuteScalar());
    
  • 之前尝试出错的原因:

    • 错误地将RETURNING id放在了参数值的位置,导致SQL语句结构混乱,数据库无法正确解析。
    • 新建命令时未手动复制原命令的参数集合,所以新命令没有参数。直接修改原命令的CommandText是最简便的方式,参数集合不会丢失。

内容的提问来源于stack exchange,提问作者jonathanh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:23:20