Android sqlite Cursor.getCount()始终返回1

时间:2015-12-01 18:17:35

标签: android sqlite

我知道Cursor.getCount()返回它的列数。我写了一段代码,我不知道我在哪里弄错了。请帮帮我,我浪费了4个小时。

Cursor res = db.rawQuery("select count(*) from "+TABLE_NAME+" WHERE SENDERS_EMAIL = '"+email+"' AND FRIENDS_STATUS = 1;",null);

    Log.d("FrindsInDb","FriendExists, count="+res.getCount());

说明: 情况1: if email = princy@gmail.com,然后输出 - > res.getCount()返回1(正确) 案例2: if email = princy@gmail.c,然后 ALSO 输出 - > res.getCount()会返回1(为什么?)

在我SENDERS_EMAIL下的表格中,只有princy@gmail.com存在

4 个答案:

答案 0 :(得分:3)

选择count(*)始终返回1行。从查询中删除count方法。

因此,从表中选择所有行,然后从游标中选择getCount。

    Cursor res = db.rawQuery("select * from "+TABLE_NAME+" WHERE SENDERS_EMAIL = '"+email+"' AND FRIENDS_STATUS = 1;",null);

    Log.d("FrindsInDb","FriendExists, count="+res.getCount());

答案 1 :(得分:2)

res.getCount()将返回no。的行。由于您要求计数(*),它将始终返回1行,无论数据是否存在

正确的代码将是

Log.d("Result",res.get(0));

这里res.get(0)没有。行

答案 2 :(得分:0)

您正在使用

Log.d("FrindsInDb","FriendExists, count="+res.getCount());

此处res.getCount()将始终返回有多少行。

答案 3 :(得分:0)

cursor.getCount(),返回结果的行;所以,你的sql“从表中选择count(*)”,结果只有一行。您可以使用“select * from table”来计数,否则您可以使用“cursor。”