安卓奇葩问题之SQLite条件查找不到数据
今天真是日了狗了。
先说需求:要做一个累死支付宝首页的可自定义的栏目。栏目是动态从后台获取的,所以就会有一个本地数据和后台数据的同步问题。为了方便对本地数据的增删改查,首先想到SQLite。
然后就写了个工具类,调用接口后,先进行插入操作,成功;然后查询所有数据,成功;
然而,人生处处是惊喜。根据ID进行的查询、删除、更新,都会报错:游标的index越界了。
那就是没有查到数据嘛。首先想到是SQL语句写错了,或者是执行SQL的方法掉错了。
然后就试了无数种方法,发现都不行,还是一样的错误。
然后我就蒙逼了。
然后突然灵光一现,SQLite是弱类型的数据库,所以在插入的时候我的ID是int类型,但是在写SQl的时候,用int类型就不行了,必须要string类型。疑难杂症终于解决了。
下面上代码:
/**
* 添加数据
*/
public void insert(ChannelItem channelItem) {
db.execSQL("insert into HNBLife_Channel values(?,?,?,?,?,?,?)",
new Object[]{channelItem.getId(), channelItem.getName(), channelItem.getUrlStr(),
channelItem.getSmallPicUrl(), channelItem.getBigPicUrl(), channelItem.isBig(), channelItem.isAdd()});
}
注意这里:channelItem.getId(),这个是int类型
然后在查询的时候:
/**
* 根据id查询数据
*/
public ChannelItem findById(int id) {
Cursor cursor = db.rawQuery("select * from HNBLife_Channel where id=?",
new String[]{String.valueOf(id)});
ChannelItem item = null;
while (cursor.moveToNext()) {
item = getItem(cursor);
}
return item;
}
注意rawQuery方法的第二个参数:这里是String类型。
所以就出现了上述问题。
解决方案很简单,在插入的时候把int转换成String就可以了。
安卓奇葩问题之SQLite条件查找不到数据的更多相关文章
- Sql Server 根据条件查找多条数据中最大值的详细记录
--(正常效果) select l.* from loadCurveSampling l left join Meter m on l.meter_id=m.Meter_ID --聚合当天最大值数据记 ...
- 通过IF({1,0}和VLOOKUP函数实现Excel的双条件多条件查找的方法
在Excel中,通过VLOOKUP函数可以查找到数据并返回数据.不仅能跨表查找,同时,更能跨工作薄查找. 但是,VLOOKUP函数一般情况下,只能实现单条件查找. 如果想通过VLOOKUP函数来实现双 ...
- Excel:6种多条件查找方法
如下图所示,要求根据设备分类和品牌来查找相应的销售数量. 1. 使用VLOOKUP+辅助列进行多条件查找 本例采用的方法是在原表的最前面加一辅助列,辅助列的公式为:=B2&C2 然后再采用VL ...
- Excel学习笔记:vlookup基础及多条件查找
一.vlookup基础 关于vlookup的基础不多记录,相信基本的使用方法大家都懂得. 使用格式:=vlookup(搜索值,搜索范围,列号,是否精准匹配) =VLOOKUP(E2,$B$2:$C$6 ...
- c# winform 多条件查找 外加网络人才回答
浮生 Э 2012-11-22 c# winform 多条件查找 20 我现在有2个textbox 一个是用户名,另一个是电话 现在想对这两个进行条件查找datagridview里的数据 s ...
- 个人永久性免费-Excel催化剂功能第80波-按条件查找数字,扩展原生查找功能
Excel的查找替换功能,只能对文本类数据查找较为得力,若需查找数字类型的数据,如查找大于100的数字,就无能为力,此篇Excel催化剂补足其短板. Excel数据类型知识背景介绍 用好Excel,必 ...
- mysql字段按逗号,拆分并按条件查找
mysql字段按逗号,拆分并按条件查找 mysql 表结构 CREATE TABLE `subid` ( `id1` varchar(255) DEFAULT NULL, `id2` varchar( ...
- 【Excel】多条件查找
例如下图:要求在单元格从C10中根据分类与名称找出相应的数量 1.VLOOKUP函数(数组公式) {=VLOOKUP(A10&B10,IF({1,0},A2:A6&B2:B6,C2:C ...
- 通过exists判断数据,并查找存在的数据
----通过exists判断数据,并查找存在的数据---以scott用户的emp 及dept表为例 select * from emp; select * from dept; ---查找emp表中的 ...
随机推荐
- LeetCode Bulb Switcher 319
变换灯泡颜色 There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off ...
- html5 自定义验证信息
h5 为表单新增了很多类型,及属性. 根据这些新增的类型及属性 h5也为我们提供了验证这些数据的js函数,这些验证表单的函数都存在了ValidityState对象中,接下来让我们一起来了解一下这些 ...
- SOA架构介绍和理解
SOA架构介绍和理解 SOA的正确方法论及目标模型,其实SOA在实现架构落地上,需要考虑到对服务的组合,不断的重用现有的服务,让企业应用可以逐步集成,快速实现业务的迭代. 通过SOA架构分层将服务按照 ...
- linux默认网关的设置
linux装系统设IP,这应该是系统管理员的基本功,可是不同的网络结构有不同的ip设法,您知道吗? 1.一块网卡的情况 这个没啥好说的,估计地球人都知道:address,netmask,gatew ...
- iOS调试
iOS高效调试 写代码难免出现bug.储备些调试技能绝对能够提高你的工作效率,让bug无所遁形.下面就和大家分享一些我在工作中常用的iOS调试小技能. 1. 打印 最简单,基础的调试方法就是打印日志了 ...
- IPython, Notebook, NumPy, SciPy, matplotlib 和其它
安装这些工具pip install ipython pip install notebookpip install numpypip install scipypip install matplotl ...
- 新版react踩坑总结
使用es6语法与原本es5语法几个有区别的地方 1.React.creatClass与React.Component var Component = React.createClass({ rende ...
- 检测Java程序运行时间的2种方法(高精度的时间[纳秒]与低精度的时间[毫秒])
第一种是以毫秒为单位计算的. 代码如下: long startTime=System.currentTimeMillis(); //获取开始时间 doSomeThing(); //测试的代码段 lon ...
- lua面试基础知识
1.lua中八种基础类型:nil(空),boolean(布尔),number(数字),string(字符串),userdata(自定义类型),function(函数),thread(线程),table ...
- I/O流——字节流
流的概念 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以使文件,内存,或是网络连接.类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流.这时候你就 ...