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
,因为我认为这可能是因为数字。我仍然遇到同样的问题
我通过使用 X 是字母的格式@X
的命名参数来解决它。我以为我以前试过这个,但似乎我第一次犯了一些错误(我不知道是什么让它第一次失败)。这一次它完美无缺