2014-12-27 15 views
7

Cố gắng mở rộng lớp bằng SQLiteOpenHelper, nhưng lỗi này hiển thị: "Không có hàm tạo mặc định nào có sẵn trong android.database.sqlite.SQLitepenhelper "cùng với khác 'không thể giải quyết biểu tượng loại, Lưu ý, ...'"Không có hàm tạo mặc định nào có sẵn trong android.database.sqlite.SQLitepenhelper" trong Android Studio

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); 
    } 

Trả lời

13

Bạn cần phải xác định một constructor rõ ràng bản thân mà các cuộc gọi 4 hoặc 5 arg super constructor trong SQLiteOpenHelper.

Ví dụ:

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

nơi database.db là tên tập tin cơ sở dữ liệu của bạn và 1 là phiên bản.

+0

Tôi có cùng một câu hỏi về lớp WebView, nhưng điều này đã trả lời câu hỏi của tôi. Cảm ơn! – Seth

2

Nếu DBHelper con của bạn sau đó bài trợ giúp này, bạn có thể othervise allready understandfirst Xác định nó như thế này ở bên ngoài của bạn lớp, phương tiện uperside ...

private DBHelper ourHelper; 
private final Context ourContext; 

Sau đó sử dụng này

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); 
} 

Và sau đó thử ngữ cảnh này cho lớp cha mẹ của bạn

public MyDatabase(Context c){ 
    ourContext=c; 
} 
Các vấn đề liên quan