繁体   English   中英

Android SQLite 寄存器不一致

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM