SQLite .NET Insert ExecuteNonQuery Returns 1

本文关键字:Returns ExecuteNonQuery Insert NET SQLite | 更新日期: 2023-09-27 18:00:23

SQL:

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#伪ish代码:

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

ExecuteNonQuery()运行时,返回值1,根据SqliteOrg,该值表示:

SQL错误或数据库丢失

除此之外,不会引发任何异常,并且数据插入正确。

有没有办法用System.Data.SQLite得到LAST_ERROR_MESSAGE?我只遇到过获取非.net API的最后一条错误消息的方法。

当我错误地插入到不存在的列时,会返回相同的错误代码(1),但这一次会引发异常,并显示最后一条错误消息。

那么,如果插入件正在工作,为什么会返回1?非常感谢您的帮助。

编辑:我也尝试过不发送TimeStamp DateTime,以防出现日期格式问题,但也出现了同样的情况。

编辑:原来1是受影响的行数,它都在文档中http://msdn.microsoft.com/en-us/library/system.data.idbcommand.executenonquery%28v=vs.80%29.aspx

SQLite .NET Insert ExecuteNonQuery Returns 1

重新阅读文档。我相信ExecuteNonQuery会返回受影响的行数,或者在出现错误时返回-1

您确定返回值吗?

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

对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。对于所有其他类型的语句,返回值为-1。