Каков наилучший способ структурировать мой поток Sqlite для Android? - PullRequest
0 голосов
/ 26 февраля 2012

Я занимаюсь рефакторингом своего приложения и пытаюсь использовать лучшие практики для работы с БД.Может кто-нибудь посоветовать лучший способ справиться с проверкой, если база данных существует и выполнением обновлений.В настоящее время я использую метод: 1. Откройте читаемую базу данных.2. Выполнение проверки, если таблица находится там, если не запускает исключение Sql 3a. В обработке исключений я закрываю базу данных 3b.Открытие базы данных с возможностью записи: 3c Выполнение таблицы создания в исключении sql и первоначальное обновление из моего фида Json.

Это лучший способ управления базой данных и обновления, или я должен делать это иначеэффективнее?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2012

Я использую следующий метод:

  private boolean checkDataBase(){

    SQLiteDatabase checkDB = null;

    try{
        String myPath = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
        long result =  DatabaseUtils.longForQuery(checkDB,"SELECT count() FROM sqlite_master WHERE type='table' AND name='table_name'",null);
        if(result == 0)
            checkDB = null;

    }catch(SQLiteException e){

        Log.e("", e.getLocalizedMessage()+e.getMessage()+e.getCause()+
                Arrays.toString(e.getStackTrace()));

    }

    if(checkDB != null){

        checkDB.close();

    }
 return checkDB != null ? true : false;
}
0 голосов
/ 26 февраля 2012

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

Насколько я знаю, если вы выполняете многократные запросы на sqlite, желательно выполнять их в транзакции по вышеуказанной причине и, во-вторых, из-за скорости.

...