gpt4 book ai didi

java - 记录不会从 SQLite 数据库中删除

转载 作者:行者123 更新时间:2023-11-29 04:09:57 25 4
gpt4 key购买 nike

我目前正在研究我的 A Level 计算机科学控制评估,在 Android Studio、Java 和 XML 中制作一个 Scout Manager 应用程序,这些我以前都没有用过。我现在处于最后阶段,但我遇到了一个我似乎无法解决的错误。

我正在尝试从事件表中删除 session 记录。这在以前工作得很好,但是出于某种原因,尽管代码没有更改(无论如何我记得),但它不再这样做了。

这是来自“编辑事件” Activity 的代码:

//Deletes the event from the database
public void deleteEvent(View view)
{
boolean result=DatabaseHandler.deleteSession(sessionid);
if (result==true)
{
Toast.makeText(
context,
"Event Deleted",
Toast.LENGTH_SHORT
).show();
backToProgramme(view);
}
else
{
Toast.makeText(
context,
"Error - please try again",
Toast.LENGTH_SHORT
).show();
}
}

这是来自数据库处理程序的代码:

//Deleting a session in the events table
public boolean deleteSession(int id)
{
boolean result = false;
String query = "SELECT * FROM " + TABLE_EVENTS + " WHERE " + COLUMN_SEID + " = '"
+ String.valueOf(id) + "'";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
sessionDetails session = new sessionDetails();
if (cursor.moveToFirst())
{
session.setSessionID(Integer.parseInt(cursor.getString(0)));
db.delete (TABLE_EVENTS, COLUMN_SCID + "=?", new String[]{String.valueOf(
session.getSessionID())});
cursor.close();
result = true;
}
return result;
}

我完全搞不懂为什么这没有删除记录。

最佳答案

你在这里做的是:
搜索表 TABLE_EVENTS 以找到包含 COLUMN_SEID = id 的行,如果找到,则获取 COLUMN_SCID 列的值并删除 所在的行>COLUMN_SCID 等于该值!
为什么这一切?
不能只删除 COLUMN_SEID = id 的行吗?
我相信你的代码应该这样写:

public boolean deleteSession(int id) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(TABLE_EVENTS, COLUMN_SEID + " = ?", new String[]{String.valueOf(id)}) > 0;
}

delete() 方法返回删除的行数,因此如果没有行被删除,deleteSession() 将返回 false

关于java - 记录不会从 SQLite 数据库中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55669563/

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