Getting the Last Insert ID with SQLite.NET in C# Getting the Last Insert ID with SQLite.NET in C# sql sql

Getting the Last Insert ID with SQLite.NET in C#


Using C# (.net 4.0) with SQLite, the SQLiteConnection class has a property LastInsertRowId that equals the Primary Integer Key of the most recently inserted (or updated) element.

The rowID is returned if the table doesn't have a primary integer key (in this case the rowID is column is automatically created).

See https://www.sqlite.org/c3ref/last_insert_rowid.html for more.

As for wrapping multiple commands in a single transaction, any commands entered after the transaction begins and before it is committed are part of one transaction.

long rowID;using (SQLiteConnection con = new SQLiteConnection([datasource]){    SQLiteTransaction transaction = null;    transaction = con.BeginTransaction();    ... [execute insert statement]    rowID = con.LastInsertRowId;    transaction.Commit()}


select last_insert_rowid();

And you will need to execute it as a scalar query.

string sql = @"select last_insert_rowid()";long lastId = (long)command.ExecuteScalar(sql); // Need to type-cast since `ExecuteScalar` returns an object.


last_insert_rowid() is part of the solution. It returns a row number, not the actual ID.

cmd = CNN.CreateCommand();cmd.CommandText = "SELECT last_insert_rowid()";object i = cmd.ExecuteScalar();cmd.CommandText = "SELECT " + ID_Name + " FROM " + TableName + " WHERE rowid=" + i.ToString();i = cmd.ExecuteScalar();