查询Android数据库是否存在!

我为我的android应用程序创建了一个包含静态数据的数据库,并且不需要更新/删除功能,因此当应用程序启动时,我想检查数据库是否存在,如果不存在,那么执行我的dbAdapter类。 我知道它是一个简单的if语句,但我只是想知道查询db是否存在的最有效的方法。

干杯


/**
 * 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是数据库文件的路径。

我之所以不检查一个文件是否存在,是因为它不会告诉(a)它是否是一个sqlite数据库文件,(b)该文件没有损坏,并且可以实际读取,即由于部分下载或已经被创造了。


我宁愿直接检查文件的存在:

private static boolean doesDatabaseExist(Context context, String dbName) {
    File dbFile = context.getDatabasePath(dbName);
    return dbFile.exists();
}

当你使用下面的类初始化时:

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());
        }
    }

}
链接地址: http://www.djcxy.com/p/31955.html

上一篇: Query if Android database exists!

下一篇: Android SQLite Database not working when returning to main activity