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 楼答案
好了。您没有在cursorToView()中加载描述
下一次,如果运行模拟器,您可以读取自己的数据库,查看是否缺少任何条目How to view data saved in android database(SQLite)?