" android.database.sqlite.SQLitepenhelper"中没有默认的构造函数。在Android Studio中

时间:2014-12-27 13:57:13

标签: android sqlite constructor default sqliteopenhelper

尝试使用SQLiteOpenHelper扩展类,但是此错误显示:“android.database.sqlite.SQLitepenhelper中没有可用的默认构造函数”以及其他“无法解析符号类别,注意......”

class DbHelper extends SQLiteOpenHelper {


    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(Category.getSql());
        db.execSQL(Note.getSql());
        db.execSQL(Attachment.getSql());
        db.execSQL(CheckItem.getSql());
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + Category.TABLE_NAME);
       db.execSQL("DROP TABLE IF EXISTS " + Note.TABLE_NAME);
        db.execSQL("DROP TABLE IF EXISTS " + Attachment.TABLE_NAME);
        db.execSQL("DROP TABLE IF EXISTS " + CheckItem.TABLE_NAME);

        onCreate(db);
    }

2 个答案:

答案 0 :(得分:15)

您需要自己定义一个显式构造函数,在SQLiteOpenHelper中调用4或5-arg super构造函数。

例如:

public DbHelper(Context context) {
    super(context, "database.db", null, 1);
}

其中database.db是您的数据库文件名,1是版本。

答案 1 :(得分:2)

如果你的DBHelper孩子对这篇文章提供了帮助,那么你可以完全理解第一个在课堂外定义它就像这个一样,意味着超越......

private DBHelper ourHelper;
private final Context ourContext;

然后使用此

class DbHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VIRSION);
        // TODO Auto-generated constructor stub
    }

@Override
public void onCreate(SQLiteDatabase db) {

    db.execSQL(Category.getSql());
    db.execSQL(Note.getSql());
    db.execSQL(Attachment.getSql());
    db.execSQL(CheckItem.getSql());
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + Category.TABLE_NAME);
   db.execSQL("DROP TABLE IF EXISTS " + Note.TABLE_NAME);
    db.execSQL("DROP TABLE IF EXISTS " + Attachment.TABLE_NAME);
    db.execSQL("DROP TABLE IF EXISTS " + CheckItem.TABLE_NAME);

    onCreate(db);
}

然后为您的父类尝试此上下文

public MyDatabase(Context c){
    ourContext=c;
}