簡體   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