有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java表在更新时不更新,但返回相反的值

我有一个问题,我的sqlite表“视图”在更新查询时没有更新

views表的构造如下所示,我的两个外键构成标识主键:

CREATE TABLE views
(description TEXT, 
modulesId INTEGER NOT NULL REFERENCES modules(modulesId),
eventId INTEGER NOT NULL REFERENCES events(eventId),
PRIMARY KEY (modulesId, eventId));

使用下面的代码,我尝试更新表,结果是返回的整数的结果为1

private SQLiteDatabase database;    

public void updateViews(String description, int modulesId, int eventId) {
    ContentValues values = new ContentValues();
    values.put(MyDatabaseManager.VIEWS_DESCRIPTION, description);
    String where = "modulesId = " + modulesId + " AND eventId = " + eventId;

    int i = database.update(MyDatabaseManager.TABLE_VIEWS, values, where, null);
    }

所以。int i返回1,表示我的行确实已更新。然而,当我试图检索行时,我发现假定更新的行的描述仍然为空

public List<Views> getAllViews() {
    List<Views> views = new ArrayList<Views>();
    Cursor cursor = database.query(MyDatabaseManager.TABLE_VIEWS, allViewsColumns, null, null, null, null, null);

    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        Views view = cursorToView(cursor);
        views.add(view);
        cursor.moveToNext();
    }
    cursor.close();
    return views;
}

在不关闭应用程序的情况下,这是正确的

我的代码中没有明显的错误,而且我似乎也不能理解我的日志。这让我相信我在代码的某个地方做了一些根本错误的事情。很可能是我没有发布的代码,但也许您可以找出我可能出错的地方

我不是很精通编程,但我会尽我最大的努力来遵循我得到的任何帮助。谢谢

更新1:

在神话中,这看起来很有希望。我会仔细检查一下。谢谢

private Views cursorToView(Cursor cursor) {
    Views view = new Views();
    view.setModuleId(cursor.getLong(0));
    view.setEventId(cursor.getLong(1));
    return view;
}

更新2:答复

此外,我忘了用我的描述栏更新我的allViewsColumn,但这不是这个特定问题的一部分,但可能会帮助其他人

private Views cursorToView(Cursor cursor) {
    Views view = new Views();
    view.setModuleId(cursor.getLong(0));
    view.setEventId(cursor.getLong(1));
    view.setViewDescription(cursor.getString(2));
    return view;
}

共 (1) 个答案