0

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

4

1 回答 1

0

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

于 2013-01-31T16:26:12.060 回答