为什么我的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()
很好。
再次感谢您的帮助和批评,我们对此表示赞赏。干杯!
答案 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);