2010-11-20 35 views
0

通常,对于WinForm或Web应用程序,我通过RDBMS或通过单独的安装过程创建数据库和表。不过,我还没有看到Android中的任何类型。我见过的所有示例都将数据库创建脚本嵌入到像this这样的活动中。获取Android数据库设置?

我现在想出的最好的东西是从数据访问构造函数调用一个方法来检查数据库是否安装 - 如果没有 - 安装它。但是,这对我来说似乎是一个很大的开销。

什么是最简洁的方式来执行android数据库安装,然后忘掉它?

回答

1

当使用SQLLiteOpenHelper(http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html)时,只有在数据库不存在时才会调用onCreate方法。当引入新版本的数据库时,将会调用onUpgrade。 如果数据库已经存在,并且没有版本升级发生,这些方法将不会被执行。

在您的活动中不需要执行if-else检查。

private static class DatabaseHelper extends SQLiteOpenHelper 
{ 
    DatabaseHelper(Context context) 
    { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     db.execSQL(DATABASE_CREATE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
    int newVersion) 
    { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion); 
     db.execSQL(DATABASE_UPGRADE); 
    } 
}