Android数据库代码优化(1) - 从Google的数据库guide说起
2024-08-31 06:44:27
假如我们没有任何在Android上使用SQLite的经验,现在要开始在工作中用SQLite存储一些数据。OK, 我们去看google的官方培训文档吧,http://developer.android.com/training/basics/data-storage/databases.html
差不多有个5分钟到15分钟吧,这篇官方培训文档就看完了,然后就可以在应用中使用了,它提示的几个Note我们也都注意到了,没犯任何错误。这时候写出来的代码是什么下场呢?
首先是内存泄漏吧,教程没有教用try…finally关Cursor的好习惯,甚至都没提关Cursor这事儿。
其次crash肯定不少,教程里对于execSQL,getWritableDatabase这些容易出exception的语句,没给要加try…catch的提示。
第三你会习惯用getColumnIndexOrThrow吧?会想到其实直接传个常数进去就可以了么?
long itemId = cursor.getLong(cursor.getColumnIndexOrThrow(FeedEntry._ID));
第四,你能想到SQLite的特色功能自动解决冲突有个insertWithOnConflict方法可以调么?自己写select多查一次性能受影响吧?insert出exception会影响性能吧?
第五,update和delete用ID的时候还用LIKE语句?SQLite的索引是不支持LIKE的,生怕能用上索引加快点速度么。。。
String selection =FeedEntry.COLUMN_NAME_ENTRY_ID +" LIKE ?";
看了很多讲优化的书和网上的文章,似乎针对于Android上的SQLite部分关注得都比较少. 下面我们就来共同探讨一下这些问题.
最新文章
- [BI项目记]-配置Sharepoint2013支持文档版本管理笔记
- var ball0=new Ball(";executing";) 是怎样被执行的?
- wcf,jquery,post,跨域
- 微信SDK开发学习
- MIB-II
- simple python code when @ simplnano
- IOS开发-PCH文件的使用
- PHP中设置、使用、删除Cookie方法
- Rstudio编辑界面美化设置
- JS时间戳与日期类型格式相互转换
- Hibernate学习
- SpringMVC+Spring3+Hibernate4开发环境的搭建
- win7下怎么安装IIS
- Communication Model
- C#中三层架构UI、BLL、DAL、Model实际操作
- mysql exists及not exists的使用
- python之路——2
- C# 开发代码标准
- php bccomp的替换函数
- error MSB3073: 命令“regsvr32 /s /c:VCEnd”已退出,代码为 3
热门文章
- mysql完整备份与恢复
- day3-set集合
- redhat 9.0安装完不能上网解决办法(补) - 并附上redhat9.0 下载链接
- 3. Longest Substring Without Repeating Characters(最长子串,双指针+hash)
- 103. Binary Tree Zigzag Level Order Traversal -----层序遍历
- Kattis - cokolada【水】
- SQL 函数以及SQL 编程
- 双camera景深计算
- ES6 随记(3.4.1)-- 函数的拓展(参数默认值,扩展运算符)
- Spring 之 @ComponentScan以及mock Spring MVC