我使用以下代码来删除 SQLite 数据库表。显然,有一条消息表明该表已被删除,但是当应用程序再次运行时,该表再次显示。
ContactsDetailsDbAdapter.java
private String r(String s, String str, String s1) {
this.s = s;
this.str = str;
this.s1 = s1;
return str;
}
public void deleteGroupData(String str) {
this.mDb.delete(DATABASE_TABLE, r("contact_group_id='", str, "'"), (String[]) null);
}
GroupDetailsDbAdapter.java
public boolean deleteData(String str) {
SQLiteDatabase sQLiteDatabase = this.mDb;
StringBuilder sb = new StringBuilder();
sb.append("group_id=");
sb.append(str);
return sQLiteDatabase.delete(DATABASE_TABLE, sb.toString(),
(String[]) null) > 0;
}
联系人列表.java
button.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View view) {
GroupDetailsDbAdapter groupDetailsDbAdapter = new
GroupDetailsDbAdapter(ContactsList.this);
groupDetailsDbAdapter.open();
groupDetailsDbAdapter.deleteData(str);
groupDetailsDbAdapter.close();
ContactsDetailsDbAdapter contactsDetailsDbAdapter = new
ContactsDetailsDbAdapter(ContactsList.this);
contactsDetailsDbAdapter.open();
contactsDetailsDbAdapter.deleteGroupData(str);
contactsDetailsDbAdapter.close();
dialog.dismiss();
Toast.makeText(ContactsList.this.getApplicationContext(), "Deleted Successfully",
Toast.LENGTH_SHORT).show();
ContactsList.this.finish();
return true;
}
});
Logcat 中显示以下错误。有人可以检查一下这段代码并告诉我错误是什么吗?
https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase#delete(java.lang.String,%20java.lang.String,%20java.lang.String[]):- 删除数据库中的行的便捷方法。
您需要DROP表格,并且没有方便的方法可以这样做,因此您可以使用
execSQL
方法。
例如
sQLiteDatabase.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE + ";";
IF EXISTS
表示如果表不存在也不会失败。
execSQL 不返回任何值,因此您需要要么不返回任何值,要么确定要返回的合适值。
表是行(0 到 n 行)的容器。删除所有行将导致表仍然存在但为空。