2013-01-31 49 views
0

我有下面的代碼,在命令創建一個SQLiteCommandSystem.Data.SQLite參數

_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,因爲我認爲這可能是因爲數字。我仍然有同樣的問題

回答

0

我解決了它通過使用格式@X與X是一個字母的命名參數。我以爲我曾嘗試過,但似乎第一次犯了一些錯誤(我不知道是什麼讓它第一次失敗)。這一次它的工作完美無缺