System.Data.SQLite parameters

本文关键字:parameters SQLite Data System | 更新日期: 2023-09-27 17:57:01

我有以下代码可以创建一个SQLiteCommand

_deleteMergeWithBoth = new SQLiteCommand("delete from block where offset = ?1; delete from chunk where offset = ?1; delete from chunk where offset = ?2; update chunk set length = ?3 where offset = ?4", _db);
for (var i = 1; i <= 4; i++) _deleteMergeWithBoth.Parameters.Add(new SQLiteParameter(i.ToString(CultureInfo.InvariantCulture), DbType.Int64));
_deleteMergeWithBoth.Prepare();

命令中的占位符(有 4 个语句)的格式为 ?x,x 是某个数字。

该命令按原样运行良好。但是,如果我加入中间两个语句,使它们成为

delete from chunk where offset in (?1,?2)

我突然得到命令中提供的参数不足。在单个命令中使用多个语句时,我遇到了参数问题。在这种情况下,我只是使用 ?作为占位符。这是通过使用编号参数来解决的。然而,在这种情况下,我不知道我做错了什么。占位符清楚地引用了 ?2,我确实有一个名为"2"的参数与命令相关联

编辑:我还尝试使用不同格式的占位符,例如@parametername,因为我认为这可能是因为数字。我仍然遇到同样的问题

System.Data.SQLite parameters

我通过使用 X 是字母的格式@X的命名参数来解决它。我以为我以前试过这个,但似乎我第一次犯了一些错误(我不知道是什么让它第一次失败)。这一次它完美无缺