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()}
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();