У меня была эта проблема в течение нескольких дней, и на самом деле я не вижу проблемы в коде, поэтому некоторые дополнительные глаза, чтобы посмотреть, действительно оценены.Android: getWriteableDatabase() error
Я запускаю приложение, просто создавая новый объект менеджера баз данных и открывая базу данных менеджеров.
DBManager db_manager = new DBManager(this);
db_manager.open()
приложение должно затем выполнить простую операцию вставки, но выдается ошибка:
02-11 18:13:30.350: E/AndroidRuntime(8961): Caused by: java.lang.NullPointerException
02-11 18:13:30.350: E/AndroidRuntime(8961): at com.test.DB.DBManager$DatabaseHelper.onCreate(DBManager.java:44)
02-11 18:13:30.350: E/AndroidRuntime(8961): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:106)
02-11 18:13:30.350: E/AndroidRuntime(8961): at com.test.DB.DBManager.open(DBManager.java:61)
02-11 18:13:30.350: E/AndroidRuntime(8961): at com.test.DB.Display.onCreate(Display.java:26)
02-11 18:13:30.350: E/AndroidRuntime(8961): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
02-11 18:13:30.350: E/AndroidRuntime(8961): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
Класс DatabaseHelper:
class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db){
the_db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Метода DBManager, открытый() является причиной проблема.
public DBManager(Context c){
this.context = c;
helper = new DatabaseHelper(context);
}
// Makes the_db available to the Manager class.
public DBManager open() throws SQLException{
the_db = helper.getWritableDatabase();
return this;
}
Оператор onCreate() не может быть переопределен. – MindDrip
@MindDrip Возможно, мой ответ был путаным, я имею в виду 'public void onCreate (SQLiteDatabase db) { the_db.execSQL (DATABASE_CREATE); } 'из вашего' DatabaseHelper' (который расширяет SQLiteOpenHelper), метод, который может быть переопределен -> http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html – Luksprog
hmm странно, eclipse дает мне ошибка «Переопределение запрещена для этого местоположения». – MindDrip