Ваша проблема в том, что execSQL
не позволяет возвращать значения / данные.Согласно: -
Выполните один оператор SQL, который НЕ является SELECT, или любой другой оператор SQL, который возвращает данные. SQLiteDatabase - execSQL
Вы можете использовать метод getVersion
, который возвращает номер версии в виде целого числа.В качестве альтернативы вы можете использовать любой метод rawQuery
, который будет возвращать курсор, из которого можно извлечь значение, например
public int myGetversion() {
int rv = 0;
Cursor csr = this.rawQuery("PRAGMA user_version");
if csr.moveToFirst() {
rv = csr.getInt(0);
}
csr.close;
return rv;
}
- В приведенном выше кодировании предполагается кодирование в подклассе SQLiteOpenHelper, поэтому
this
эквалайзеров в базу данных SQLIteDatabase. - 0 будет возвращено в очень маловероятном сценарии, когда по какой-то причине пользовательская версия не может быть извлечена.
или вы можете скопировать то, что делает getVersion
, используя DatabaseUtils longForQuery
метод.
например
public int myGetVersion() {
return ((Long) DatabaseUtils.longForQuery(this, "PRAGMA user_version;", null)).intValue();
}