проблема вызова setLocale при создании новой базы данных в Android - PullRequest
2 голосов
/ 23 марта 2011

Я пытаюсь получить код доступа к БД в первый раз, и я получаю некоторые ошибки и буду признателен за помощь.вот что происходит:

1) я создаю новый экземпляр SQLiteOpenHelper, вызывая этот конструктор:

public MyDbOpenHelper(Context context) {
    super(context, "some_name.db", null, 1); 
}

приведенный выше экземпляр - это переменная myHelper, используемая ниже

2) я вызываю myHelper.getReadableDatabase ()

3), в этот момент Android вызывает мой метод onCreate.моя реализация этого метода начинается следующим образом:

public void onCreate(SQLiteDatabase db) {
    db.setLocale(new Locale("en"));
    //...
}

4) вышеуказанный вызов не завершается.я получаю следующий дамп:

BEGIN TRANSACTION не удалось установить языковой стандарт
не удалось открыть some_name.db для записи (попробую только для чтения):
android.database.sqlite.SQLiteException: невозможно запуститьтранзакция внутри транзакции
в android.database.sqlite.SQLiteDatabase.native_setLocale (собственный метод)
в android.database.sqlite.SQLiteDatabase.setLocale (SQLiteDatabase.java:1751)
в android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper ...
в android.database.sqlite.SQLiteOpenHelper.getReadableDatabase (SQLiteOpenHelper ....

похоже, так как я пытаюсь получить читабельныйdb, когда db еще не существует, поэтому Android пытается его создать и создает доступную для записи базу данных для setLocale ... и поэтому он жалуется на «транзакцию внутри транзакции»? как это должно быть сделано?

спасибо, любая помощь будет оценена

...