Solución:
Usando C # (.net 4.0) con SQLite, la clase SQLiteConnection tiene una propiedad LastInsertRowId
que es igual a la clave de número entero principal del elemento insertado (o actualizado) más recientemente.
El rowID se devuelve si la tabla no tiene una clave entera principal (en este caso, el rowID es la columna se crea automáticamente).
Consulte https://www.sqlite.org/c3ref/last_insert_rowid.html para obtener más información.
En cuanto a envolver varios comandos en una sola transacción, cualquier comando ingresado después de que comience la transacción y antes de que se confirme son parte de una transacción.
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();
Y deberá ejecutarlo como una consulta escalar.
string sql = @"select last_insert_rowid()";
long lastId = (long)command.ExecuteScalar(sql); // Need to type-cast since `ExecuteScalar` returns an object.
last_insert_rowid () es parte de la solución. Devuelve un número de fila, no el ID real.
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();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)