我有以下代码创建一个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
因为我认为可能是因为数字。我仍然遇到同样的问题