为什么SELECT COUNT(*)返回1

时间:2015-04-09 10:28:47

标签: android sqlite

为什么我的getAccountCount仅在我的数据库中有多个条目时返回1。这不是获取ACCOUNTS表中条目数的正确方法吗?

getAccountCount

int getAccountCount() {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cur = db.rawQuery("SELECT COUNT (*) FROM " + ACCOUNTS, null);
    int x = cur.getCount();
    cur.close();
    return x;
}

从其他活动中调用

    dbHelper = new DatabaseHelper(this);
    txtNo.setText(String.valueOf(dbHelper.getAccountCount()));

稍微为我的失误感到尴尬,所以这是为了恢复一点尊严; _;

无论如何,为我的错误道歉并感谢您的帮助。我正在摆弄最初有SELECT * FROM myTable的教程代码,但我读到某个地方在大型数据库中使用SELECT *可能会影响性能,因为SELECT *会给出所有记录列表表中的列,而SELECT COUNT *只计算行数。但是,当我用SELECT * FROM myTable替换SELECT COUNT (*) FROM myTable时,我忘记更改cur的解释,并且只是假设我的getAccountCount()很好。

再次感谢您的帮助和批评,我们对此表示赞赏。干杯!

3 个答案:

答案 0 :(得分:3)

  

为什么我的getAccountCount只有多个才返回1   我的数据库中的条目

因为Cursor.getCount()返回当前光标中行的数字而不是计数值。

要使用COUNT位置的光标使用Cursor.getInt获取0值:

cur.moveToFirst();
int x = mcursor.getInt(0);

答案 1 :(得分:2)

这将返回表

中的条目数
int numRows =(int) DatabaseUtils.queryNumEntries(db, "table_name");

答案 2 :(得分:1)

你不想要getCount()。 即使Select COUNT(*)的结果为5,getCOunt()也将为1 ...

你应该做一些像

这样的事情
if (cursor.moveToFirst()) // data?
   System.out.println(cursor.getInt(0);