android初始化数据库安装一次

时间:2014-03-05 21:48:01

标签: android android-sqlite

我正在为Android开发一个应用程序,我正在寻找一种方法来创建数据库表并初始化它,但只在安装应用程序或第一次启动时才执行此操作。在第一次创建和初始化表之后,我不希望此代码再次出现,因为它会将大量数据插入到表中。 我可以这样做吗?

3 个答案:

答案 0 :(得分:0)

扩展SQLiteOpenHelper

public class MyDB extends SQLiteOpenHelper {

Context c;

public MyDB(Context c) {
    super(c, DB_NAME, null, DB_VERSION);
    this.c=c;
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table "+DB_TABLE+" ( _id integer primary key autoincrement, "+COL_1+" text, "+COL_2+" text, "+COL_3+" text, "+COL_4+" integer, "+COL_5+" integer, "+COL_6+" text );");
}

@Override
public void onUpgrade(SQLiteDatabase db, int from, int to) {
    Log.i("onUpgrade", "From Version "+from+" to version "+to);
    switch(from) {
    case 0:
        db.execSQL("DROP TABLE IF EXISTS wine;");
        db.execSQL("create table "+DB_TABLE+" ( _id integer primary key autoincrement, "+COL_1+" text, "+COL_2+" text, "+COL_3+" text, "+COL_4+" integer, "+COL_5+" integer, "+COL_6+" text );");
    case 1:
        db.execSQL("ALTER TABLE "+DB_TABLE+" ADD COLUMN "+COL_6+" text;"); //comment was not in the original database
        break;
    }
}

答案 1 :(得分:0)

您需要创建一个扩展SQLLiteHelper的类并覆盖onCreate()方法以创建表并插入任何行。在此之后,除非您获得它的可写实例并传入您自己的查询,否则不会执行数据库查询。

如果您希望以后对您的应用进行更改,则需要覆盖onUpgrade()方法以对数据库进行更改。

答案 2 :(得分:0)

检查应用程序每次启动时数据库是否为空,如果是,请插入数据,否则忽略。