Обновление базы Android - PullRequest
       7

Обновление базы Android

6 голосов
/ 20 января 2010

Может кто-нибудь подсказать, как обновить базу в андроиде. Я создал приложение со встроенной базой данных. Я изменил версию базы данных в манифесте и создал метод обновления. Я хотел проверить, правильно ли обновлялась база данных, но когда я использую команду adb, только -r позволит мне выполнить переустановку, но она сохранит базу данных. Есть ли способ запустить команду adb, которая позволит мне обновить базу данных. Спасибо.

Ответы [ 6 ]

7 голосов
/ 14 марта 2011

Вот как я бы обработал свой метод updateRow:

public void updateRow(long rowId, String code, String name) {
      ContentValues args = new ContentValues();
      args.put("code", code);
      args.put("name", name);
      db.update(DATABASE_TABLE, args, "_id=" + rowId, null);
}
3 голосов
/ 20 января 2010

Что сработало для меня, так это изменение номера версии базы данных.Это постоянное число, которое используется методом onCreate () вашего контент-провайдера.Нечто подобное работает, если вы не используете поставщика контента для своей базы данных и запрашиваете его напрямую.См. Пример исходного кода здесь .

2 голосов
/ 20 января 2010

Взгляните на следующие ресурсы и посмотрите, насколько они полезны:

Вкусные закладки
http://delicious.com/tag/android+adb
http://delicious.com/tag/android+database

DevX: создание и использование баз данных в Android
http://www.devx.com/wireless/Article/40842

Обучение Android: программирование баз данных
http://learnandroid.blogspot.com/2008/01/android-database.html

Обзор пакета базы данных Android
http://developer.android.com/reference/android/database/package-summary.html

1 голос
/ 31 июля 2013

Я не советую использовать этот способ:

public void updateRow(long rowId, String code, String name) {
      ContentValues args = new ContentValues();
      args.put("code", code);
      args.put("name", name);
      db.update(DATABASE_TABLE, args, "_id=" + rowId, null);
}

Ваше приложение будет уязвимо для атаки SQL инъекций, лучший способ сделать это что-то вроде этого:

public void updateRow(long rowId, String code, String name) {
      ContentValues args = new ContentValues();
      args.put("code", code);
      args.put("name", name);
      String whereArgs[] = new String[1];
      whereArgs[0] = "" + rowId;
      db.update(DATABASE_TABLE, args, "_id= ?", whereArgs);
}
1 голос
/ 09 июня 2012

Если под обновлением вы подразумеваете перестройку (как я делаю во время разработки, когда я хочу запускать новую базу данных каждый раз, когда запускается мое приложение), добавьте этот код перед доступом к базе данных в вашем приложении:

this.getContext().getApplicationContext().deleteDatabase(DATABASENAME);

OR

Найдите путь к вашей базе данных:

SQLiteHelper sql_database_helper = new SQLiteHelper(this.getContext().getApplicationContext());
File dbFile = getDatabasePath(DATABASENAME);
Log.v("XIX","DB FILE PATH:"+dbFile.getAbsolutePath());

Затем удалите базу данных из командной строки:

> adb devices
List of devices attached
3246%$%^$&17   device  
> adb shell
$ su 
su
rm mydatapath

ПРИМЕЧАНИЕ. Возможно, вы не сможете получить доступ к команде su без взлома телефона

Пояснение: Если вы не хотите следовать совету, предоставленному r1k0 (что, вероятно, является правильным способом сделать это, если вы обновляете уже выпущенное приложение), вы можете просто удалить базу данных с помощью следующих команд adb и перезапустить приложение. снова вызовет метод onCreate.

1 голос
/ 10 октября 2010

Для меня сработало изменение параметра номера версии, который я предоставляю, на класс DBOpenHelper, который расширяет SQLiteOpenHelper (класс, используемый для создания / чтения / записи / и т.д ... базы данных Android). При увеличении параметра номера версии функция onUpdate () вызывается один раз для нового значения этого параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...