J'ai un problème simple avec un pas si simple solution ... Je suis actuellement des données insérez dans une base de données comme ceci:Obtenir la dernière insertion ID avec 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 dernière ligne est important. Pourquoi est-ce que je fournis une connexion? Eh bien, il existe une fonction SQLite appelée last_insert_rowid() que vous pouvez appeler et obtenir le dernier ID d'insertion. Le problème est qu'il est lié à une connexion et .NET semble réouvrir et fermer les connexions pour chaque opération de jeu de données. Je pensais que l'obtention de la connexion à partir d'un adaptateur de table changerait les choses. Mais ce n'est pas le cas.
Quelqu'un pourrait-il résoudre ce problème? Peut-être où obtenir une connexion constante de? Ou peut-être quelque chose de plus élégant?
Merci.
EDIT:
Ceci est également un problème avec les transactions, je besoin de la même connexion si je voudrais utiliser des transactions, de sorte que c'est aussi un problème ...
rowid doit être coulé à Int64: 'var result = (Int64) command.ExecuteScalar (SQL);' ' – Johnny
Le type de valeur de long' est déjà un' Int64'. –
J'ai trouvé que cette réponse ne fonctionne pas. La réponse suivante (par Alex Smith) fonctionne. – ttom