游标计数(*)getCount工作不正常

时间:2016-06-06 13:59:32

标签: android mysql

我想检查我的表中是否有与id_user对应的用户的记录,如果没有我将添加它。问题是我的Cursor.getCount()返回1并且它没有意义,因为我的表是完全空的。

Cursor c = db.rawQuery("SELECT count(*) FROM Users WHERE id_user = '"
+ jsonObj.getString("id_user") + "'", null);
Log.i("getUser cursor",c.getCount() + "");  // it prints 1 
c.moveToFirst();
int ic = c.getInt(0);
Log.i("getUser count2", ic + ""); // it prints 0

为什么c.getCount()在没有任何记录时给我1。但是,c.getInt(0)似乎工作正常。

由于

1 个答案:

答案 0 :(得分:2)

因为您的查询中有一行。

Select count(*) 

将返回包含记录计数的一行。记录数为0,因此返回一行,包含值0.

Select *

然后

c.getCount()

会返回你期望的0,因为你要拉回所有行,(不是行数)并且没有行。但这是一个糟糕的方法,因为它可以撤回额外的数据并且可能很慢。

在这种情况下 int ic = c.getInt(0);是获取所需数据的正确方法。