为什么MySQLiteHelper(扩展SQLiteOpenHelper)中的onCreate()不执行?

时间:2015-01-23 12:37:49

标签: java android sqlite

我的代码是whit sq-lite,但有一些错误。我已经工作了几天,但它不起作用。 我编写了MySQLiteHelper类(扩展了SQLiteOpenHelper)。

public class MySQLiteHelper extends SQLiteOpenHelper {


    public static final String CLASSIFICATION = "CREATE TABLE IF NOT EXISTS classification(classification_id Integer primary key AUTOINCREMENT,classify VARCHAR)";
    public static final String ACCOUNT = "CREATE TABLE IF NOT EXISTS account(account_id Integer primary key AUTOINCREMENT,username VARCHAR,password VARCHAR,classification_id Integer REFERENCES classification(classification_id))";
    public MySQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version){
        super(context,name,factory,version);
    }

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

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

    }

}

我编写了MySQLiteDatabase类。

public class MySQLiteDatabase  {
    private static MySQLiteDatabase instance;
    private SQLiteDatabase sqLiteDatabase;
    private MySQLiteDatabase(Context context){
        MySQLiteHelper helper = new MySQLiteHelper(context,"test.db",null,1);
        sqLiteDatabase = helper.getWritableDatabase();
        sqLiteDatabase.execSQL("INSERT INTO classification(classification_id,classify) VALUES(1,'QQ')");
    }
    public static MySQLiteDatabase getInstance(Context context){
        if(null == instance){
            instance = new MySQLiteDatabase(context);
        }
        return instance;
    }
}

但我在SampleActivity中的onCreate()中编写代码。

MySQLiteDatabase my = MySQLiteDatabase.getInstance(SampleActivity.this);

MySQLiteHelper中的onCreate()不执行?

另一方面,我在Sample Activity中的onCreate()中编写了以下代码.MySQLiteHelper中的onCreate()执行。

 MySQLiteHelper helper = new MySQLiteHelper(context,"test.db",null,1);

我尽力解决,但我不能。请帮助我。

1 个答案:

答案 0 :(得分:0)

数据库助手onCreate()仅在

时由框架调用
  • 您正在呼叫getWritableDatabase()getReadableDatabase()

  • 数据库文件不存在。

可能是数据库文件已存在。 Unisntall你的应用程序或清除其数据,以摆脱它。