SQLite .NET 插入 ExecuteNonQuery 返回 1
Posted
技术标签:
【中文标题】SQLite .NET 插入 ExecuteNonQuery 返回 1【英文标题】:SQLite .NET Insert ExecuteNonQuery Returns 1 【发布时间】:2013-02-07 09:24:46 【问题描述】: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 错误或缺少数据库
除了,没有抛出异常并且数据插入正确。
有没有办法使用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
【问题讨论】:
你从哪里得到返回值?你总是可以try catch
例外。
我没有逐字复制我的工作代码 - 但概念是相同的。
【参考方案1】:
重读您的文档。我相信 ExecuteNonQuery 返回受影响的行数或 -1 错误。
【讨论】:
我疲惫的眼睛错过了,非常感谢您的帮助。 存储过程总是返回 -1 - 即使成功。 对于 UPDATE、INSERT 和 DELETE 语句,返回值是受命令影响的行数。对于所有其他类型的语句,返回值为 -1。【参考方案2】:你确定返回值吗?
http://msdn.microsoft.com/en-us/library/system.data.idbcommand.executenonquery.aspx
对于 UPDATE、INSERT 和 DELETE 语句,返回值是受命令影响的行数。对于所有其他类型的语句,返回值为 -1。
【讨论】:
我认为它在说“是的,我插入了 '1' 个新行。恭喜!” 我疲惫的眼睛错过了,非常感谢您的帮助。 别忘了将其中一个标记为答案,这样就不会继续回答了。 我已经“去过那里”了!我在 StackOF 上大约 1/4 的问题是“累”的问题............ 好的。但那 60 秒是我给你的参考网址! (不用担心)以上是关于SQLite .NET 插入 ExecuteNonQuery 返回 1的主要内容,如果未能解决你的问题,请参考以下文章
sql server 中executenon quary用法
使用 ADO.NET Entity Framework 将记录插入 Sqlite DB?