Android SQLite - Получить идентификатор

58
7

Я пытаюсь получить первичный ключ (ID), созданный следующей вставкой:

public void insert (int FK_Vistoria, int CodIrregularidade, int FK_Equipamento, int FK_SubArea) throws SQLException {
String sql = "INSERT OR REPLACE INTO " + DATABASE_TABLE + " VALUES (?, ?, ?, ?);";
SQLiteStatement statement = mDb.compileStatement(sql);
mDb.beginTransaction();

statement.bindLong(1, FK_Vistoria);
statement.bindLong(2, FK_Equipamento);
statement.bindLong(3, CodIrregularidade);
statement.bindLong(4, FK_SubArea);

statement.execute();

mDb.setTransactionSuccessful();
mDb.endTransaction();
}

Я попытался получить его, используя этот фрагмент кода:

int idIrregularidade = mDb.insert(idVistoria, idCriterio, idEquipamento, idArea);

Может ли кто-нибудь помочь?

спросил(а) 2016-01-08T16:46:00+03:00 4 года, 9 месяцев назад
1
Решение
70

Метод SQLiteStatement.execute() возвращает void вместо вставленного идентификатора строки.

Используйте SQLiteStatement.executeInsert(), которые возвращают идентификатор строки последней вставленной строки, если эта вставка успешно выполнена. -1 в противном случае

Измените метод insert чтобы получить идентификатор строки по вызову:

public long insert (int FK_Vistoria,...){
....
long insertedRowID= statement.executeInsert();
....
return insertedRowID;
}

ответил(а) 2016-01-08T16:52:00+03:00 4 года, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема