SQLItes onConfigure方法的奇怪行为

时间:2013-12-11 08:04:19

标签: android sqlite android-sqlite

我正在尝试在我的数据库表中实现一个外键,因为我需要在我设置PRAGMA的地方调用onConfigure。但是这种方法的实现给了我奇怪的行为。 当我使用@Override注释时,eclipse intellisense要求我将其删除,当我删除它时,我得到一组不同的警告此方法不会覆盖当前构建目标的任何内容,但是在API级别16(当前目标是11)

以下是我的特定问题代码的代码段:

public static class DatabaseHelper extends SQLiteOpenHelper {

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE0);
        db.execSQL(unique); 

    }

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

    }

    public void onConfigure(SQLiteDatabase db){
        System.out.println("Hello from on Configure"); 
        db.execSQL("PRAGMA foreign_keys=ON");

    }


}

这是我的Manifest SDK声明:

  <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="18" />

1 个答案:

答案 0 :(得分:2)

要阻止android lint引发错误,请注释onConfigureDatabaseOpenHelper中覆盖为 JellyBean或更高。年长 android版本将继续使用已经检查过的旧机制 用于onOpen覆盖。

您需要在班级中添加@TargetAPI,如下所示:

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
      @Override
      public void onConfigure(SQLiteDatabase db) {
          super.onConfigure(db); }

查看Reference