sqlite的rawQuery和query的一个问题总结

前几天在论坛上问了一个问题,有人解答了,我总结下来,以后可以用到

自己先建立一个空表,继而用以下方法得到表中数据的个数

String sql = "select count(*) from " + TABLENAME;
        return sqLiteDatabase.rawQuery(sql, null).getCount();

发现返回的是1,而不是0.

但是用下面这个方法就对了

return sqLiteDatabase.query(TABLENAME, null, null, null, null, null, null).getCount();


原因是这样的:

因为sqLiteDatabase.rawQuery(sql, null)的返回值是Cursor游标,也就是说,你的cursor的记录数是1,你可以使用以下代码利用cursor,取得查询的记录数,空表的话也就是0啦。



Cursor cursor = sqLiteDatabase.rawQuery(sql, null);  
        cursor.moveToFirst();  
        return cursor.getLong(0); 


rawQuery和query构造的sql语句不一样,得到结果的cursor也不一样。
rawQuery的sql语句是select count(*) from ,cursor的结果是一条记录,里面是0,getCount()=1
query的sql语句是select * from,cursor没有记录,getCount()=0


cursor.getCount()


return the number of rows in database table.

参考是:点击打开链接

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值