当前位置: 首页 > 面试题库 >

SELECT count(*)FROM表上的Android SQLite Cursor超出范围异常

谢俊英
2023-03-14
问题内容

下面的函数给了我一个超出范围的异常…

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

它的目的是返回数据库中的行数。有人知道怎么了吗?我是否可能以错误的方式执行此任务?


问题答案:

你错过了

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进行大量工作。



 类似资料:
  • 问题内容: 我有以下代码: 我的索引超出范围错误,我不知道为什么。我声明了大小为10的尺寸。为什么会出现此错误? 问题答案: 您声明了一个,其初始容量为10个元素,但没有向此列表中添加元素,即列表为空。将替换现有元素,但是由于列表中没有元素,因此将引发异常。您必须使用方法在之前添加元素。 表示列表内部维护的数组的开头大小为10。在列表中添加更多元素时,此内部数组的大小可能会更改。

  • 问题内容: 每当我运行xhtml时。它给了我以下例外。statusindex对象的值为5。我正在使用JQuery进行延迟滚动,因此当我的xhml页面getMoreStatusList调用getMoreStatusList函数时,它为我提供了超出范围的异常的索引。数据库中有26个状态更新,因此索引超出范围的异常对我来说毫无意义。 1)代码 2)例外 问题答案: 消息说是30。这不是您认为的5,而是2

  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至

  • 我使用Sqoop将数据从SQL server导入到本地HDF。我使用一个简单的自由形式查询从表中提取大约10行。下面是我从终端执行的sqoop命令: 当我从本地计算机执行此操作时,会出现以下异常: 原因:com。微软sqlserver。jdbc。SQLServerException:索引2超出范围。在com。微软sqlserver。jdbc。SQLServerException。在com上生成fr

  • 我正在创建一个宏,它将从一个更大的工作簿中选择工作表,移动和保存这些工作表作为一个新的工作簿,然后移动到下一个集。 我创建了一个带有开始和结束值(由工作表索引号指定)的伪“数组”。 我遇到了一个“下标超出范围”的错误,在完成保存文件的部分后,但在将拉出下一组工作表的循环之前。

  • 问题内容: 我编写了这段代码,将整个以10为底的数字转换为二进制。我相信代码就是它所需要的一切,但是我无法让ArrayLists正常工作。我已经在这个网站上花了几个小时,而其他人则尝试了无数次更改,但无济于事。我已经获得了可以在没有和错误的情况下进行编译的代码,但是一旦输入int程序就会崩溃。 这是代码: 这些是我输入数字时Java抛出的异常。 我希望这是足够的信息。 问题答案: 在您的代码中,您