如何结合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
相关产品推荐
相关产品推荐

