Intereting Posts
Андроид-студия auto complete: как отображать конструкторы с параметрами Остановить службу в android Android Studio: сборка Gradle не выполняется – выполнение выполнено для задачи: compileDebugAidl ' Использование глобальной обработки исключений на Android «Вызов этого из основного потока может привести к взаимоблокировке и / или ANR при получении accesToken» от GoogleAuthUtil (интеграция Google Plus в Android) Как установить тайм-аут в библиотеке переоснащения? Выполнять запросы с помощью «Дооснащения» внутри пользовательского Runnable Android Expansion apk Разрешения для диспетчера местоположений Android, которые будут использоваться Android setOnEditorActionListener () не срабатывает Как использовать маркеры начала и конца в regex для Java String? Потоковое видео (или прогрессивная загрузка) в браузер Droid Предварительный просмотр дизайнера студии Android: как включить раму устройства? Почему google map v2 внезапно разбился на java.lang.NullPointerException: Попытка получить длину нулевого массива? Создать ошибку проекта PhoneGap 3.0.0 – «добавить платформу для Android» i не узел

Как протестировать обновление базы данных sqlite перед загрузкой новой версии моего приложения в игровой магазин в Android

Я получаю проблему, ни одна таблица не нашла «table_name» в моем загруженном приложении после обновления версии приложения. Я вышел после тестирования. Я получаю эту проблему только после обновления старой версии приложения до новой версии приложения.

Что я реализовал

Я сделал код в методе onUpgrade (), а также обновил версию db в конструкторе, но не смог проверить его на устройстве.

Шаг 1) Увеличить код версии с 1 по 2

public databasehelper(Context context) { super(context, DATABASE_NAME, null, 2); this.myContext = context; try { createDataBase(); openDataBase(); } catch (IOException e) { e.printStackTrace(); } } 

Шаг 2) добавлена ​​новая таблица в метод onUpgrade ()

 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.e("onUpgrade db", ">>>>called"); switch (oldVersion) { case 1: db.execSQL(DATABASE_CREATE_notification_counter); Log.e("db version", ">>>"+oldVersion); // we want both updates, so no break statement here... case 2: Log.e("db version", ">>>"+oldVersion); // I removed onCreate() method from here because new version will already have the new table // onCreate(db); } } 

Шаг 3) Метод onCreate () для новой версии базы данных.

 @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE_notification_counter); Log.d("oncreate db", ">>>>called"); } 

У меня есть решение для обновления базы данных link1 link2 link3 link4

Почему я не смог его проверить?

Мы загрузили платное приложение в игровой магазин, поэтому мне нужно протестировать метод обновления db в эмуляторе или устройстве, используя два разных apk – это более старая версия и более новая версия .. и я впервые тестировал устройство, используя старую версию, а затем новую версию (db Изменения с добавленной новой таблицей в db), но метод onUpgrade () не будет вызываться в это время.

Вопрос:

1) Как проверить тестирование db перед обновлением новой версии в магазине воспроизведения?

2) Он будет вызываться только при обновлении версии только из магазина воспроизведения?

Пожалуйста, помогите мне решить эту проблему.

Ответы будут оценены. Заранее спасибо.

Solutions Collecting From Web of "Как протестировать обновление базы данных sqlite перед загрузкой новой версии моего приложения в игровой магазин в Android"

Версия db, хранящаяся внутри db. Просто создайте db (db_old) со старой версией, чем в DbHelper. Используйте DbHelper для подключения к db_old и вызывается метод onUpgrade.

Вы можете использовать существующий db как db_old, просто уменьшите его версию. Для изменения версии вы можете использовать любой редактор db sqlite.

Если вы не хотите писать тест для DbHelper и хотите имитировать обновление приложения, вы можете использовать команду adb install -r . Подробнее читайте здесь.

После долгого поиска и тестирования моего приложения, наконец …

Я заработал! В классе createDataBase отсутствует строка:

Я просто добавил строку ниже в мой код createDataBase ()

 this.getWritableDatabase(); 

Мы должны дать разрешение на запись базы данных при создании базы данных, это разрешение будет давать разрешение на запись базы данных при обновлении приложения из магазина воспроизведения.

После успешного открытия база данных кэшируется, поэтому вы можете вызывать этот метод каждый раз, когда вам нужно писать в базу данных. (Обязательно вызовите функцию close (), когда вам больше не нужна база данных.) Ошибки, такие как неправильные разрешения или полный диск, могут привести к сбою этого метода, но будущие попытки могут быть успешными, если проблема устранена.

Обновление базы данных может занять много времени, вы не должны вызывать этот метод из основного потока приложения, в том числе из ContentProvider.onCreate ().

 public void createDataBase() throws IOException { boolean dbExist = checkDataBase(); if (!dbExist) { this.getReadableDatabase(); try { // ---If not created then copy the database--- copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } else { /* This line: that has been solve my problem */ this.getWritableDatabase(); } } 

Public void openDataBase () выдает SQLException {

  // --- Open the database--- String myPath = path + DATABASE_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); // you also have to add open_readwrite condition here /*onUpgrade(myDataBase, 1, 2);*/ // no need to call upgrade here it will be called automatically } 

Вы должны дать условие чтения записи, открывая базу данных.

Кроме того, onUpgrade () вызывается, когда создается новый объект класса DataBaseHelper, но только если номера версий базы данных не совпадают. Таким образом, это означает, что нет необходимости вызывать onUpgrade «самостоятельно». Если вы публикуете обновление своего db, просто увеличьте версию nr на единицу и примените изменения в методе onUpgrade ().

Я получил его по данной ссылке:

База данных onUpgrade – oldVersion – newVersion

Надеюсь, это поможет любому для будущего разработчика!

Как протестировать обновление базы данных sqlite без загрузки приложения новой версии из игрового магазина в Android

1) Как проверить тестирование db перед обновлением новой версии в магазине воспроизведения?

Я загрузил плагин для браузера sqlite для eclipse

http://sourceforge.net/projects/sqlitebrowser/

И проверьте этот учебник о том, как использовать плагин sqlite

http://www.coderzheaven.com/2011/04/18/sqlitemanager-plugin-for-eclipse/

Просто скопируйте банку с 1-й ссылки и вставьте в свою установочную папку eclipse под названием plugin и перезапустите eclipse

Затем запустите эмулятор и перейдите к своему пакету из DDMS, и вы можете просмотреть свою базу данных sqlite и проверить, существуют ли изменения, внесенные вами в таблицы, или нет.

Вы можете установить apk из другого источника, кроме Playstore (если он включен на вашем телефоне). Самый простой способ отправить его по телефону по электронной почте или скопировать apk через USB-кабель.