que tienen un problema sencillo con una solución no es tan simple ... Estoy insertando actualmente algunos datos en una base de datos de esta manera:Obtener la última inserción de identificación con SQLite.NET en C#
kompenzacijeDataSet.KompenzacijeRow kompenzacija = kompenzacijeDataSet.Kompenzacije.NewKompenzacijeRow();
kompenzacija.Datum = DateTime.Now;
kompenzacija.PodjetjeID = stranka.id;
kompenzacija.Znesek = Decimal.Parse(tbZnesek.Text);
kompenzacijeDataSet.Kompenzacije.Rows.Add(kompenzacija);
kompenzacijeDataSetTableAdapters.KompenzacijeTableAdapter kompTA = new kompenzacijeDataSetTableAdapters.KompenzacijeTableAdapter();
kompTA.Update(this.kompenzacijeDataSet.Kompenzacije);
this.currentKompenzacijaID = LastInsertID(kompTA.Connection);
La última línea es importante. ¿Por qué proporciono una conexión? Bueno, hay una función SQLite llamada last_insert_rowid() a la que puede llamar y obtener la última ID de inserción. El problema es que está vinculado a una conexión y parece que .NET está reabriendo y cerrando conexiones para cada operación de conjunto de datos. Pensé que obtener la conexión de un adaptador de mesa cambiaría las cosas. Pero no es así
¿Alguien sabe cómo solucionar esto? ¿Tal vez de dónde obtener una conexión constante? O tal vez algo más elegante?
Gracias.
EDIT:
Este es también un problema con las transacciones, necesitaría la misma conexión si se desea utilizar transacciones, por lo que es también un problema ...
rowid sea echado a Int64: 'var resultado = (Int64) command.ExecuteScalar (sql);' – Johnny
El tipo 'valor long' ya es un' Int64'. –
Encontré que esta respuesta no funciona. La siguiente respuesta (por Alex Smith) funciona. – ttom