写在前面的话:
找工作已经告一段落,整天无所事事找不到目标的日子也被涪陵之行治愈,现在的我只剩下满满的正能量!吼吼,俺要努力做课题,为毕设做准备啦!一想到明年就能自食其力了就开心,钱钱啊~嘿嘿~
暑假的时候,为了找工作能更好地演示我的APP,特意对软件进行了代码调整,也就是只能看,不能用(不能实现检测的功能呢),于是乎,俺重拾课题的第一步自然就必须得把APP的代码改过来,还我娃本来面貌,哈哈!
正文分割线----------------------------------------------------------------------------------------------
【功能】将头像统一存储到T_User表里,并能查询显示在界面
1.旧功能陈述
因为App是分阶段开发的,很久很久以前还没有统一创建sqlite数据库,基本是需要用到什么表和字段就现创建,后来一想不行啊,于是就本着程序员对规范代码的追求开始设计整个APP系统的数据库和表。But,由于当时时间紧,任务重,俺只得让“头像”这块儿较复杂的数据还是存在原始时代创建的数据表里,那么:
其中,将Bitmap格式的图片转换为byte[]类型,然后存入sqlite数据库(blob类型)时的代码如下:
此时,在DIalogFragment查询数据库中的头像数据,然后设置到界面上的代码如下:
这样做的缺点是:所有的数据库表都统一了,唯独这个表 My_UserInfo 无法跟注册用户信息关联在一起。这是要出问题的哇!
2.新功能实现
整改后的数据存储都是借助数据库工具类,对封装类对象的存储。
例如对User用户数据的存储是基于UserInfo这个对象类,里面包含了姓名、电话号码、密码、头像等字段。具体代码如下:
这其中,针对头像问题,做了如下修改:
1)将原来Image类型的头像改为Bitmap类型,并设置get和set方法
2)在反序列化部分加入对头像操作的语句
3)在序列化部分加入对头像操作的语句
接下来要在数据库帮助类UserDbUtil类中对添加用户数据、查询用户数据的方法进行修改,以包含头像部分
该工具类的整体代码如图所示:
一切调整完毕,下载一运行,。。。。运行停止!
看logcat信息显示是空指针异常,定位了半天,原来是这里代码有误啊
这里,完全没有考虑user.getHeadImage()就可能为null的情况,造成了headimg(Bitmap bm)空指针。找到问题,改就容易了:
--------------------------------------------------------------------------------------
心里想,这下该好了吧。添加健康档案,一提交,啪,运行又停止了。一看logcat,还是空指针!
心里万马奔腾啊!尼玛,不就是两三个月没编程了吗,至于搞成这样,连续两处空指针!亏得我准备面试,编小程序的时候,还每次就预防着空指针呢,怎么到了项目上,真实一点儿没发现呢。赶紧查!
没看出来,好吧,非得让我暴露得彻彻底底的。
看什么,赶紧改吧,说多了都是泪啊!
至此,终于把这个小功能的空指针异常给改完了!吸取教训,这人啊,往往死在最不起眼的细节上面,说的就是我们这些苦逼的程序员,尤其是正在进阶中的程序员!共勉啊!
原文链接:https://www.f2er.com/sqlite/198668.html