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

标签 java android sqlite android-sqlite

我目前正在从事 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();
        }
    }

这是来自databaseHandler的代码:

//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/

相关文章:

python - 在 SQLAlchemy 中按小时分组?

sql - 一个SQL查询来重新排序一列的数字全为奇数,甚至全为偶数

java - 使用 xpath 读取 xhtml 标签的问题

java - hibernate :创建索引

android - 如何使用rxandroid监听gps位置更新

android - 何时使用 Android 加载器

javascript - 如何在Appcelerator中使用正确的MySQL Node js模块?

java - 在 Hibernate/JPA 中,我应该在哪里以及在哪个用例中使用 SessionFactory 和 Session

java - Java中通过分隔符行分割文件

Android:无法解析方法 'findFirstVisibleItemPosition()'?