尝试使用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);
}
答案 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;
}