当前位置:  开发笔记 > 编程语言 > 正文

SELECT count(*)FROM表中的Android SQLite游标超出范围异常

如何解决《SELECTcount(*)FROM表中的AndroidSQLite游标超出范围异常》经验,为你挑选了1个好方法。

以下函数给了我一个超出范围的例外...

public void count(){
    SQLiteDatabase db = table.getWritableDatabase();
    String count = "SELECT count(*) FROM table";
    Cursor mcursor = db.rawQuery(count, null);
    int icount = mcursor.getInt(0);
    System.out.println("NUMBER IN DB: " + icount);
}

它的意思是返回数据库中的行数.谁知道什么是错的?我也许以错误的方式完成这项任务?



1> Pentium10..:

你错过了

mcursor.moveToFirst();

public void count(){
    SQLiteDatabase db = table.getWritableDatabase();
    String count = "SELECT count(*) FROM table";
    Cursor mcursor = db.rawQuery(count, null);
    mcursor.moveToFirst();
    int icount = mcursor.getInt(0);
    System.out.println("NUMBER IN DB: " + icount);
}

但是你应该使用更好的方法来完成这项任务,比如DatabaseUtils的内置助手

public long count() {
    return DatabaseUtils.queryNumEntries(db,'tablename');
}

DatabaseUtils.longForQuery()当您有查询总计数的位置时,您可能会发现有助于获取第一列的长值.它更简单,你不需要与Cursor一起工作.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有