SQLite с WP8 сводит меня с ума. :(WP8/C#/SQLite: получить последний вставленный идентификатор?
Все, что я хочу сделать, это получить значение последнего вставленного ид ...
У меня нет:
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;}
}
Ну, ни использовал SQLiteConnection
объект, ни его Table<ShoppingItem>
кажется, содержит соответствующий элемент, содержащий последний ID
Так что я пытался сделать:.
private int GetLastInsertedRowID()
{
int Result = -1;
using (var db = new SQLiteConnection(m_DatabasePath)) {
Result = db.ExecuteScalar<int>("SELECT last_insert_rowid();");
}
return Result;
}
Но эта функция всегда возвращает 0
. :( Но когда я прочитал все записи ShoppingItem
, их идентификаторы имеют значение = 0.
Так что мой вопрос: Как я могу извлечь последний вставленный идентификатор
PS: Изменение запроса SQL для SELECT last_insert_rowid() FROM ShoppingItem;
дал тот же результат
PPS:. Такие решения, как Getting the Last Insert ID with SQLite.NET in C# не компилируют, по-видимому, есть старая версия SQLite используется, с совершенно другим API
является db.ExecuteScalar ("SELECT last_insert_rowid()"); за работой? (Без, в конце запроса) –
Joel
нет, тот же результат с запятой или без нее :( –
Я бы порекомендовал вам выбрать другое имя для вашего столбца «id» pk. Я не знаю, является ли Id чем-то вроде внутреннее ключевое слово, но я просто угадываю здесь. – Joel