我在Android中使用SQLite。 我有查询,查询执行以及如何从光标打印计数。SQLite计数示例
Cursor dataCount = mDb.rawQuery("select count(*) from " + DATABASE_JOURNAL_TABLE, null);
我没有表中的记录。
我在Android中使用SQLite。 我有查询,查询执行以及如何从光标打印计数。SQLite计数示例
Cursor dataCount = mDb.rawQuery("select count(*) from " + DATABASE_JOURNAL_TABLE, null);
我没有表中的记录。
可以由getInt(index)作为
cursor.getInt(1); // this is for example, you have to adjust index in your code
光标也有一个内置的功能getCount()返回行号这样也可以这样做:
// assuming your table has `id` column as primary key or unique key.
Cursor dataCount = mDb.rawQuery("select id from " + DATABASE_JOURNAL_TABLE, null);
dataCount.getCount();
您已经有了正确的方法。
Cursor cursor = database.rawQuery("select count(*) from " + DATABASE_JOURNAL_TABLE, null);
// ensure there is at least one row and one column
if (cursor.getCount() > 0 && cursor.getColumnCount() > 0) {
cursor.close();
return cursor.getInt(0);
} else {
cursor.close();
return 0;
}
,您必须确保至少有1行1列,如果您提供的不存在也就没有列访问和cursor.getInt(0)会抛出异常的表。
你的第一个解决方案是错误的,该查询将返回一个 “COUNT(*)” 在索引0列,因此cursor.getInt(0)将返回表计数。你的第二个解决方案可以工作,但是不好的做法,它不会有小规模的问题,但是使用“select * from”来获得具有30列和10,000行的数据库表的计数将不会很好..... – 2013-07-09 03:52:51
@SK'关于第一点,我只是举例说明,我无意用1作为索引。澄清添加了评论。你的第二点是完全有效的,对于大表得到*是个坏主意,应该从表中获得一个唯一的键(主要是主键),然后得到计数。 – 2013-07-09 04:02:57
选择ID仍然很差,聚合计数功能是最好的方法。您滥用getCount()方法。 – 2013-07-09 04:19:48