2013-02-21 4 views
2

SQL:SQLite .NET Вставить ExecuteNonQuery Возвращает 1

CREATE TABLE main.LogRecord (
Id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , 
TimeStamp DATETIME NOT NULL , 
Type TEXT NOT NULL , 
Severity TEXT NOT NULL , 
Message TEXT NOT NULL , 
Origin TEXT NOT NULL) 

INSERT INTO LogRecord 
(TimeStamp, Type, Severity, Message, Origins) VALUES 
(@timestamp, @type, @severity, @message, @origin) 

C# Псевдо-иш Код:

SQLiteCommand command = new SQLiteCommand(INSERT_COMMAND_TEXT); 
command.Parameters.AddWithValue("@paramName", object.value); 
command.Connect = connectVar; 
command.ExecuteNonQuery(); 

Когда ExecuteNonQuery() работает, значение 1 возвращается который согласно SqliteOrg означает:

Ошибка SQL или отсутствующая база данных

Кроме того, исключение не выбрасывается И данные вставляются правильно.

Есть ли способ получить LAST_ERROR_MESSAGE используя System.Data.SQLite? Я только нашел способы получить последнее сообщение об ошибке для API .net .net.

Когда я неправильно вставляю в столбец, который не существует, возвращается тот же код ошибки (1), но на этот раз исключение выдается с последним сообщением об ошибке.

Так что если вставка работает, почему 1 возвращается? Любая помощь приветствуется.

Редактировать: Я также не пытался отправить TimeStamp DateTime в случае, если это была проблема с форматированием даты, но такая же ситуация возникает.

Edit: Выключает 1 является # затронутых строк, и все это в документации http://msdn.microsoft.com/en-us/library/system.data.idbcommand.executenonquery%28v=vs.80%29.aspx

+0

Где вы получаете возвращаемое значение? Вы всегда можете «попытаться поймать» исключение. – MyCodeSucks

+0

Я не копировал свой рабочий код дословно - но понятия те же. – Chris

ответ

10

Перечитайте ваши документы. Я верю, что ExecuteNonQuery возвращает количество затронутых строк или -1 об ошибке.

+0

Мои усталые глаза пропустили это, большое спасибо за вашу помощь. – Chris

+0

Сохраненные процедуры всегда возвращают -1 - даже при успешном выполнении. –

6

Уверены ли вы в отношении возвращаемого значения?

http://msdn.microsoft.com/en-us/library/system.data.idbcommand.executenonquery.aspx

Для UPDATE, INSERT и DELETE заявления, возвращаемое значение является числом строк, затронутых командой. Для всех других типов операторов возвращаемое значение равно -1.

+0

Я думаю, что его высказывание «Да, я вставил« новый »ряд. Поздравляю!» – granadaCoder

+0

Мои усталые глаза пропустили это, спасибо вам большое за вашу помощь. – Chris

+0

Не забудьте отметить один из них в качестве ответа, чтобы он не продолжал отвечать. – granadaCoder

Смежные вопросы