Как исправить «Исключение SQLite: Недостаточно параметров, переданных команде» при использовании инструкции INSERTC#

Место общения программистов C#
Ответить
Anonymous
 Как исправить «Исключение SQLite: Недостаточно параметров, переданных команде» при использовании инструкции INSERT

Сообщение Anonymous »

Я пытаюсь вставить данные из объекта в таблицу базы данных sqlite. Я продолжаю получать ту же ошибку при попытке сделать это.

При вставке данных в другую таблицу (слова) одной и той же базы данных с использованием той же техники я могу успешно вставить данные без ошибок. Это заставляет меня поверить, что мое значение SQLiteConnection «cnn» не является проблемой. Я позаботился о том, чтобы имена свойств объекта и полей в таблице были одинаковыми. В этой конкретной таблице нет первичного ключа, но я не уверен, проблема это или нет.

Код, который не работает:

Код: Выделить всё

using (IDbConnection cnn = new SQLiteConnection(connection))
{
foreach (bridgeRecord br in bridgeWords)
{
try
{
cnn.Execute("insert into bridge (engWord, spaWord, frequency, wordClass) values (@engWord, @spaWord, @frequency, @wordClass)", br);
}
catch (SQLiteException ex)
{
Console.WriteLine(ex);
}
}
}
Код, который работает:

Код: Выделить всё

using (IDbConnection cnn = new SQLiteConnection(connection))
{
foreach (Word w in words)
{
try
{
cnn.Execute("insert into words (word, wordSimplified, confidence, difficulty, wordClass, wordCategory, dateTestedLast, popularity, language) " +
"values (@word, @wordSimplified, @confidence, @difficulty, @wordClass, @wordCategory, @dateTestedLast, @popularity, @language)", w);
}
catch (SQLiteException ex)
{
wordsBouncedBack.Add(w.word);
continue;
}
}
}
Модель класса BridgeRecord выглядит следующим образом:

Код: Выделить всё

    class bridgeRecord
{
public string engWord;
public string spaWord;
public int frequency;
public string wordClass;
}
Вот какую ошибку я получаю:

Код: Выделить всё

code = Unknown (-1), message = System.Data.SQLite.SQLiteException (0x80004005): unknown error
Insufficient parameters supplied to the command
at System.Data.SQLite.SQLiteStatement.BindParameter(Int32 index, SQLiteParameter param)
Я ожидал, что объект BridgeRecord предоставит параметры для вставки, но это не так. Хотя объект «Word», кажется, прекрасно предоставляет параметры, что меня сильно смущает.

Любая помощь будет очень признательна. Это мой первый вопрос о переполнении стека, поэтому извините, если ответ слишком очевиден :)

Подробнее здесь: https://stackoverflow.com/questions/539 ... -command-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»