Simple.Data Sqlite Insert返回Null

时间:2014-02-11 13:25:02

标签: sqlite return-value simple.data

我使用Simple.Data将数据插入Sqlite数据库。我在维基上读到Insert返回插入的数据。我需要获取最新的rowID(标识)。但我得到了Null。

使用NuGet的稳定版本。

var db = Database.OpenFile("Database.db");
var x = db.Scan.Insert(Name:"Test", Description:"test", CreationDate:DateTime.Now, DocumentDate:DateTime.Now, ModifiedDate:DateTime.Now);

数据库架构:

CREATE TABLE Scan ( 
    ID           INTEGER         PRIMARY KEY,
    Name         NVARCHAR( 50 )  NOT NULL,
    Description  TEXT,
    CreationDate DATETIME        NOT NULL,
    DocumentDate DATETIME        NOT NULL,
    ModifiedDate DATETIME        NOT NULL 
);

这对SQLite有用吗?如果不是最好的方法来检索插入记录的rowID?

1 个答案:

答案 0 :(得分:2)

有同样的“问题”。 问题出在您的架构中。

您必须在主键列中添加标识:

ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,

然后你回到行,你可以用它创建一个新对象:

var x = db.Scan.Insert(Name:"Test", Description:"test", CreationDate:DateTime.Now, DocumentDate:DateTime.Now, ModifiedDate:DateTime.Now);
return new Scan { ID = (int)x.ID, Name = x.Name, ... }

来自Wiki:

  

如果您在表上定义了IDENTITY列,则插入   方法将返回从中获取的记录的副本   数据库,因此设置了所有默认值。 0.4,支持其他   将添加获取插入行的方法。