自动递增主键的SQLite表

Ter*_*e00 1 c# sqlite

那么主要的问题是我在尝试插入数据条目时遇到错误.

(不自动递增主键)

表创建:

SQLiteConnection _sqliteCon = new SQLiteConnection(_connectStr);
_sqliteCon.Open();

string query5 = "CREATE TABLE Merkmal(MerkmalID INT PRIMARY KEY NOT NULL, ";
        query5 += "MerkmalName_FR TEXT);";
        SQLiteCommand command5 = new SQLiteCommand(query5, _sqliteCon);
        command5.ExecuteNonQuery();
        _sqliteCon.Close();
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.

现在为插入:( 我假设这是我的错误发生的地方)

SQLiteConnection _sqliteCon = new SQLiteConnection(_connectStr);
_sqliteCon.Open();
SQLiteCommand insertSQL = new SQLiteCommand("INSERT INTO Merkmal(MerkmalID,MerkmalName_FR) VALUES (?,?)",_sqliteCon);
insertSQL.Parameters.Add(new SQLiteParameter("param1",null));
insertSQL.Parameters.Add(new SQLiteParameter("param2",SomeString));
insertSQL.ExecuteNonQuery();
_sqliteCon.Close();
Run Code Online (Sandbox Code Playgroud)

有些事情值得注意:

  1. 我试图根本没有放价值.(使用硬编码值)

  2. 尝试插入时,我收到非null异常错误.

创建或插入表的正确方法是什么,以便自动增加主键

先谢谢你们.

Col*_*Two 6

更改MerkmalID INT PRIMARY KEY NOT NULLMerkmalID INTEGER PRIMARY KEY

SQLite中的大多数表都有一rowid列(也称为oid_rowid_).通过将列声明为INTEGER PRIMARY KEY(但不是INT,BIGINT等等,即使它们引用相同的类型),该列也会成为该列的别名rowid.

当您插入省略行或NULL时rowid,SQLite会为您选择一个唯一的ID.

另请参见:ROWID和INTEGER PRIMARY KEY