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

Android数据库代码优化(1) - 从Google的数据库guide说起的更多相关文章

  1. 【Android Developers Training】 26. 在SQL数据库中保存数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  2. Android数据库(1)、SQLite数据库介绍

    一.关系性数据库   关系型数据库主要有以下三个特征,尤为明显,如果没有这个三个特征约束,当多个客户端使用数据的时候就会出现各种各样的错误,所以关系型数据库定义这些约束,让客户端程序只要遵守这个规则便 ...

  3. 我的Android第四章:Android的adb命令使用以及SQlite数据库运用

    adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用.      adb有什么用?:借助adb工具,我们可以管理设备或手机模拟器的状态.还可以进行很多手机操作, ...

  4. Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase

    数据库的创建,获取,执行sql语句: 框架搭建:dao 思考: 1.数据库保存在哪里? 2.如何创建数据库?如何创建表? 3.如何更新数据库?如何更改表的列数据? 4.如何获取数据库? 5.如何修改数 ...

  5. Android学习笔记(十六)——数据库操作(上)

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类, ...

  6. Android 通过外键连接两个数据库

    Learn: 1.Android数据库的语法. 2.通过外键连接两个数据库. 3.加强了对数据库的熟悉度. 4.对文本框的visiblity属性的了解. Demo:http://pan.baidu.c ...

  7. Android 之数据存储(sdCard,sharedPreference,sqlite数据库)

    sdCard:默认路径在 /storage/sdcard/... Android支持OpenFileOutput和openFileInput方式访问手机存储器上的文件. Context提供了如下两个方 ...

  8. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)

    知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...

  9. 【Android】13.1 用Android自带的API访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 这一节我们先来看看如何直接用Android自带的API创建和访问SQLite数据库. 1.创建SQLite数据库 ...

随机推荐

  1. Codeforces Round #396 (Div. 2) E. Mahmoud and a xor trip

    地址:http://codeforces.com/contest/766/problem/E 题目: E. Mahmoud and a xor trip time limit per test 2 s ...

  2. HDU - 6333 Problem B. Harvest of Apples (莫队+组合数学)

    题意:计算C(n,0)到C(n,m)的和,T(T<=1e5)组数据. 分析:预处理出阶乘和其逆元.但如果每次O(m)累加,那么会超时. 定义 S(n, m) = sigma(C(n,m)).有公 ...

  3. CAS单点登录的配置

    先说单点登录是个啥? 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录. 配置的步骤如下: 1.生成安全证书 Cas serve ...

  4. Spark机器学习2·准备数据(pyspark)

    准备环境 anaconda nano ~/.zshrc export PATH=$PATH:/anaconda/bin source ~/.zshrc echo $HOME echo $PATH ip ...

  5. poj1694

    /*给出一棵树的描述 第一行输入t,代表案例的个数 第二行一个n代表这棵树有n个节点 接下来n行第一个数是节点的编号,根节点编号为1,然后第二个数是节点的个数,如果为0那就没子节点,否则输入节点的 编 ...

  6. jQuery幻灯片播放器插件

    在线演示 本地下载

  7. shell脚本小示例

    求1-100自然数的和: 法一:for循环 #!/bin/bash # declare -i sum=0 for ((i=0;i<=100;i++));do let sum+=$i done e ...

  8. PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD,PRD,FSD全称解析

    PM    项目经理( Project Manager )    从职业角度,是指企业建立以项目经理责任制为核心,对项目实行质量.安全.进度.成本管理的责任保证体系和全面提高项目管理水平设立的重要管理 ...

  9. 不常用的gcd公式

    gcd(a^m-b^m,a^n-b^n)=a^(gcd(m,n))-b^(gcd(m,n))

  10. xml简介与使用

    Xml是什么? XML:可扩展标记语言 1.与HTML相似,HTML注重页面·展示 2.xml注重于数据的保存 3.无需预编译 4.符合w3c的标准 可扩展:可以自定义 标记:计算机所能认知的信息符号 ...