Saltar al contenido

Obtener el último ID de inserción con SQLite.NET en C#

Hola, descubrimos la respuesta a tu búsqueda, deslízate y la verás aquí.

Solución:

Usando C# (.net 4.0) con SQLite, la clase SQLiteConnection tiene una propiedad LastInsertRowId que es igual a la clave entera principal del elemento insertado (o actualizado) más recientemente.

Se devuelve el ID de fila si la tabla no tiene un entero principal key (en este caso, el ID de fila es una columna que se crea automáticamente).

Consulte https://www.sqlite.org/c3ref/last_insert_rowid.html para obtener más información.

En cuanto a envolver múltiples comandos en una sola transacción, cualquier comando ingresado después de que comience la transacción y antes de que se confirme es 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();

Nos puedes añadir valor a nuestra información cooperando tu veteranía en las acotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *