Запрос, если база данных Android существует!

Я создал базу данных для своего приложения для Android, которое содержит статические данные и не требует, обновляют/удаляют функциональность таким образом, когда приложение запускается, я хочу проверить, существует ли дб и если не затем выполняют мой dbAdapter класс. Я знаю, что это - простое, если оператор, но я просто задавался вопросом самый эффективный способ запросить, существует ли дб.

Удачи

64
задан Gray 21 February 2011 в 18:44
поделиться

2 ответа

/**
 * Check if the database exist and can be read.
 * 
 * @return true if it exists and can be read, false if it doesn't
 */
private boolean checkDataBase() {
    SQLiteDatabase checkDB = null;
    try {
        checkDB = SQLiteDatabase.openDatabase(DB_FULL_PATH, null,
                SQLiteDatabase.OPEN_READONLY);
        checkDB.close();
    } catch (SQLiteException e) {
        // database doesn't exist yet.
    }
    return checkDB != null;
}

где DB_FULL_PATH - это путь к файлу вашей базы данных.

И причина, по которой я не просто проверяю, существует ли файл, заключается в том, что он не может сказать, (а) это ли файл sqlite db, (б) файл не поврежден и может быть фактически прочитан, т.е. из-за частичной загрузки или как бы то ни было, он был создан.

79
ответ дан 24 November 2019 в 15:36
поделиться

Когда вы инициализируете приведенный ниже класс с:

mOpenHelper = new DatabaseHelper(getContext());

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

Затем, чтобы вы могли запрашивать базу данных, используйте:

 SQLiteDatabase db = mOpenHelper.getWritableDatabase();

вышеуказанные методы db.query() & db.insert() и т.д.

private static class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DB_NAME = "db_name.db";
    private static final int DB_VER = 1;

    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VER);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE table_name (" + "_id INTEGER PRIMARY KEY, "
                + " column_name_2 TEXT );");


                .execSQL("INSERT INTO table_name "
                        + "(column_name_2) "
                        + "VALUES " + "('hello world');");


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        Log.w(TAG + "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        try {
            db.execSQL("DROP TABLE IF EXISTS table_name");
            onCreate(db);

        } catch (SQLException e) {
            Log.e(TAG + "getting exception "
                    + e.getLocalizedMessage().toString());
        }
    }

}
4
ответ дан 24 November 2019 в 15:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: