SQLite z WP8 doprowadza mnie do szału. :(WP8/C#/SQLite: pobierz ostatni wstawiony identyfikator?
Wszystko co chcę zrobić, to pobrać wartość ostatniego wstawiony id ...
mam:
class ShoppingItem
{
[SQLite.PrimaryKey, SQLite.AutoIncrement]
public int Id {get; set;}
public string Name {get; set;}
public string Shop {get; set;}
public bool isActive {get; set;}
}
Cóż, ani wykorzystywane SQLiteConnection
obiektu ani jego Table<ShoppingItem>
wydają się zawierać odpowiedni element, który zawiera ostatni identyfikator
Więc starałem się zrobić.
private int GetLastInsertedRowID()
{
int Result = -1;
using (var db = new SQLiteConnection(m_DatabasePath)) {
Result = db.ExecuteScalar<int>("SELECT last_insert_rowid();");
}
return Result;
}
Ale ta funkcja zawsze zwraca 0
. :( Ale kiedy czytam wszystkie wpisy ShoppingItem
, ich identyfikatory mają wartości = 0.
Więc moje pytanie brzmi: Jak mogę retreive ostatni zapisany identyfikator
PS: Zmiana zapytania SQL do SELECT last_insert_rowid() FROM ShoppingItem;
dało ten sam wynik
PPS. Rozwiązania takie jak Getting the Last Insert ID with SQLite.NET in C# nie kompiluje, najwyraźniej jest to starsza wersja SQLite używany, z zupełnie innej API
jest db.ExecuteScalar ("SELECT last_insert_rowid()"); pracujący? (Bez, na końcu zapytania) –
Joel
nie, ten sam wynik z średnikiem lub bez średnika :( –
Polecam wybrać inną nazwę dla twojej kolumny pk "Id" .Nie wiem czy Id jest czymś w rodzaju wewnętrzne słowo kluczowe, ale domyślam się, – Joel