1
我在我的首選項中用一個整齊的「全部刪除」功能擴展我的應用程序。 我想從它得到什麼?只是,放下桌子,刪除所有的輸入...但是沒有...它只是給了我一個NPE。Android試圖創建一個簡單的「空數據庫」功能,拋出NPE
而現在,我真的無言以對......
Prefs.java
Preference wipeDatabase = findPreference("wipeDatabase");
wipeDatabase.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference arg0) {
AlertDialog.Builder builder = new AlertDialog.Builder(Prefs.this);
builder.setMessage("YOU SURE!??!")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mDbHelper.deleteAll(); // <-- This is the function.
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.show();
return false;
}
});
而且功能databasehelper解釋。
public void deleteAll() {
SQLiteDatabase dB = mDbHelper.getWritableDatabase();
dB.execSQL("DROP TABLE "+DATABASE_TABLE);
}
但是,它拋出一個NPE ... 我也試過用:
dB.delete(DATABASE_TABLE,null,null);
但隨着同樣的結果...什麼我做錯了!? :(
SOLUTION
Prefs.java
mDbHelper.deleteDatabase(getBaseContext()); // <-- i used this.
DatabaseHelper.java
public boolean deleteDatabase(Context context) {
return context.deleteDatabase(DATABASE_NAME);
}
完美地工作!謝謝!
這實際上工作...更新代碼!謝謝! – DreamHawk
很高興它的工作,這也是我在做什麼。我在數據庫中有一個非常複雜的模式,並且不得不刪除所有表格會很痛苦,並且有可能會丟失其中一些表格。在Android中刪除數據庫並重新創建它非常快,它簡化了代碼。 – Guillaume
我只是認爲它會更簡單,只是刪除所有行,並保存數據庫...這將是更少的時間消耗...但我想我錯了:) – DreamHawk