5

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

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?我只遇到过获取非 .net API 的最后一条错误消息的方法。

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

那么如果插入工作正常,为什么会返回 1 呢?任何帮助是极大的赞赏。

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

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

4

2 回答 2

13

重新阅读您的文档。我相信 ExecuteNonQuery 返回受影响的行数或错误时返回-1 。

于 2013-02-21T21:42:53.277 回答
6

你确定返回值吗?

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

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

于 2013-02-21T21:43:45.163 回答