假如我们没有任何在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部分关注得都比较少. 下面我们就来共同探讨一下这些问题.

最新文章

  1. [BI项目记]-配置Sharepoint2013支持文档版本管理笔记
  2. var ball0=new Ball("executing") 是怎样被执行的?
  3. wcf,jquery,post,跨域
  4. 微信SDK开发学习
  5. MIB-II
  6. simple python code when @ simplnano
  7. IOS开发-PCH文件的使用
  8. PHP中设置、使用、删除Cookie方法
  9. Rstudio编辑界面美化设置
  10. JS时间戳与日期类型格式相互转换
  11. Hibernate学习
  12. SpringMVC+Spring3+Hibernate4开发环境的搭建
  13. win7下怎么安装IIS
  14. Communication Model
  15. C#中三层架构UI、BLL、DAL、Model实际操作
  16. mysql exists及not exists的使用
  17. python之路——2
  18. C# 开发代码标准
  19. php bccomp的替换函数
  20. error MSB3073: 命令“regsvr32 /s /c:VCEnd”已退出,代码为 3

热门文章

  1. mysql完整备份与恢复
  2. day3-set集合
  3. redhat 9.0安装完不能上网解决办法(补) - 并附上redhat9.0 下载链接
  4. 3. Longest Substring Without Repeating Characters(最长子串,双指针+hash)
  5. 103. Binary Tree Zigzag Level Order Traversal -----层序遍历
  6. Kattis - cokolada【水】
  7. SQL 函数以及SQL 编程
  8. 双camera景深计算
  9. ES6 随记(3.4.1)-- 函数的拓展(参数默认值,扩展运算符)
  10. Spring 之 @ComponentScan以及mock Spring MVC