我知道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
存在
答案 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。”