[英]Inconsistent Android SQLite registers
我的 Android 应用程序上有一个本地 SQLite 数据库。 为了执行一些测试,我用values.put(regValues);
做了一些插入。 db.insert(register);
db.close();
. 然后,我对数据进行了一些查询,并在一切变得混乱时将其放在这里:
数据存储在本地 SQLite 数据库中。 当我使用诸如SELECT * FROM TABLE
之类的一般语句在我的 Android 应用程序上查询数据时,它仅检索 8 个插入的寄存器中的 2 个。 这可能是一个插入错误,但事情是这样的:
在 Android 上,查询和迭代是通过以下方式完成的:
Cursor cursor = db.query(TABLE_NAME,
new String[]{TABLE_NAME.COLUMN_ID},
null,
null,
null, null, null, null);
cursor.moveToFirst();
int numberRegs = 0;
while(cursor.moveToNext()){
numberRegs++;
}
Log.d(LOG_TAG, "numberRegs: " + numberRegs);
当我用这个 web 调试器检查寄存器时,我可以看到所有 8 个插入的寄存器。 更复杂的是,我尝试在我的计算机上下载local
数据库,看看是否可以看到数据库中插入的 8 个寄存器,但我只看到其中的 4 个。
因此,我完全迷失了,因为我无法知道本地 SQLite 数据库的真实 state。 因此,我的问题是:为什么会发生这种不一致,我可以做些什么来解决这个问题,以便在我对 Android 的查询中看到 8 个寄存器而不是当前的 2 个?
问题是使用while(cursor.moveToNext())
在遍历所有寄存器之前停止。 取而代之的是,迭代应该像这样完成:
for(int i=0; i<cursor.getCount(); i++){
cursor.moveToNext();
//Do stuff with cursor info
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.