gpt4 book ai didi

android - 记事本教程 : deleteDatabase() function

转载 作者:搜寻专家 更新时间:2023-10-30 22:20:42 24 4
gpt4 key购买 nike

我对android 网站上的记事本教程有一个简短的问题。我在教程代码中写了一个简单的函数来删除整个数据库。它看起来像这样:

数据助手.java

public void deleteDatabase() {
this.mDb.delete(DATABASE_NAME, null, null);
}

记事本v1.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(0, DELETE_ID, 0, "Delete whole Database");
return result;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
mDbHelper.deleteDatabase();
return true;
}
return super.onOptionsItemSelected(item);
}

但是当我运行应用程序并尝试删除数据库时,我会在 LogCat 中收到此错误:

sqlite 返回:error code = 1, msg= no such table: data

你能帮忙解决这个问题吗?似乎函数 deleteDatabase 无法访问数据库。

非常感谢。

菲利克斯


感谢您的帖子。现在我更新了代码:

数据助手.java

public boolean deleteDatabase(Context context) {
return context.deleteDatabase(DATABASE_NAME);
}

记事本v1.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(0, DELETE_ID, 0, "Delete whole Database");
return result;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
mDbHelper.deleteDatabase(this);
return true;
}
return super.onOptionsItemSelected(item);
}

但是现在我必须重新启动数据库被删除的应用程序。应用程序运行时我没有工作。

最佳答案

您在 SQLiteDatabase 中使用的 delete 方法对象是删除表,而不是数据库。

查看 Context 中的 delete 方法

编辑:

尝试直接从您的 Activity 调用:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
deleteDatabase(DATABASENAME);
return true;
}
return super.onOptionsItemSelected(item);
}

你现在调用的方式是从 SQLliteDatabase 对象中删除一个数据库,所以我猜它不会删除数据库,直到不再有对它的引用。

关于android - 记事本教程 : deleteDatabase() function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4529760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com