繁体   English   中英

System.Data.SQLite参数

[英]System.Data.SQLite parameters

我有以下代码创建一个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是字母)解决了该问题。 我以为以前尝试过此方法,但似乎我是第一次出错(我不知道是什么使它第一次失败)。 这次它完美地工作了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM