java - 尽管返回相反的结果,但表未在更新时更新

标签 java android sqlite

我遇到一个问题,即我的 sqlite 表“ View ”在更新查询时未更新。

View 表的构造如下,我的两个外键组成了标识主键:

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;
}

在不关闭应用程序的情况下也是如此。

我的代码中没有明显的错误,而且我似乎也无法弄清楚我的 logcat。这让我相信我在代码中的某个地方做了一些根本性的错误。最有可能的是我没有发布的代码,但也许你可以找出我可能出错的地方。

我不太擅长编程,但我会尽力遵循我得到的任何帮助。谢谢!

更新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;
}

最佳答案

给你。您没有在cursorToView() 中加载描述。

下次如果您运行模拟器,您可以读取自己的数据库以查看是否缺少任何条目。 How to view data saved in android database(SQLite)?

关于java - 尽管返回相反的结果,但表未在更新时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29552206/

相关文章:

java - 在监听器类中配置的套接字服务器阻止了 tomcat 的运行

Android Dialog(非自定义)问题

java - Android:如何生成多个加载器

Android 数据库事务

java - 如何在启动 Android LibGDX 项目时修复 NoClassDefFoundError?

java - 如何从java代码访问iframe元素

c# - 基于时间戳计算时间跨度的 SQL 查询

sql - 连接 sqlite 和字符串中的字符串

java - 动画岩石无法正确生成

java - 如何解决 setMyLocationEnabled 权限要求?