1. 介绍

SQLite是一款轻型的数据库, 是遵守ACID的关系型数据库管理系统, Android系统已经在框架中适配接口供用户使用.

2. 数据类型

SQLite采用的是动态数据类型, 会根据存入值自动判断.
SQLite具有以下五种常用的数据类型:

存储类 描述
NULL NULL 值
INTEGER 带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中
REAL 浮点值,存储为 8 字节的 IEEE 浮点数字
TEXT 文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储
BLOB blob 数据,完全根据它的输入存储

详细信息参考<SQLite 数据类型>

3. 基本使用

在Android中使用SQLite涉及到下面三个类

 - SQLiteOpenHelper: 抽象类. 我们通过继承该类, 然后重写数据库创建以及更新的方法. 我们还可以通过该类的对象获得数据库实例, 或者关闭数据库.
- SQLiteDatabase: 数据库访问类. 我们可以通过该类的对象来对数据库做一些增删改查的操作.
- Cursor: 游标. 有点类似于JDBC里的resultset, 结果集. 可以简单理解为指向数据库中某 一个记录的指针.

2.1 SQLiteOpenHelper

SQliteOpenHelper是一个抽象类, 用来管理数据库的创建和版本的管理

常用方法有:

SQLiteDatabase getReadableDatabase()   :  得到可读的数据库, 返回SQLiteDatabase对象
SQLiteDatabase getWritableDatabase() : 得到一个可写的数据库, 返回SQLiteDataba
void onCreate(SQLiteDatabase) : 创建一个表, 当数据库第一次被建立的时候被执行
void onOpen(SQLiteDatabase) : 打开数据库, 当数据库被打开的时候被执行
void onUpgrade(SQLiteDatabase,int,int) : 当数据库需要被更新的时候执行
void close() : 关闭数据库

我们我们实行一个类(Like DBHelper)来继承SQliteOpenHelper, 同时实现onCreate和onUpgrade方法.
然后创建DBHelper实例, 通过getReadableDatabase()/getWritableDatabase()来获取数据库实例, 随后即可对数据库进行操作

2.2 SQLiteDatabase

SQLiteDatabase是一个数据库对象, 它提供了丰富的方法

/* 静态方法, 打开或创建数据库 */
SQLiteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory);
/* 插入记录 */

long insert(String table, String nullColumnHack, ContentValues values);
/* 删除记录 */
int delete(String table, String whereClause, String[] whereArgs);

/* 查询记录 */
Cursor query(boolean distinct, String table, String[] columns,
String selection, String[] selectionArgs, String groupBy,
String having, String orderBy, String limit);
/* 更新记录 */
int update(String table, ContentValues values, String whereClause, String[] whereArgs)
/* 执行SQL语句 */
void execSQL (String sql)

更多方法请参考<SQLiteDataBase的一些方法整理>

2.3 Cursor

Cursor 是每行记录的集合, 在使用时必须知道每一列的名称和数据类型
常用方法如下:

/* 关闭游标,释放资源 */
void close()
/* 在缓冲区中检索请求的列的文本,将将其存储 */
void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)
/* 返回所有列的总数 */
int getColumnCount()
/* 返回指定列的名称, 不存在返回-1 */
int getColumnIndex(String columnName)
/* 从零开始返回指定列名称, 不存在抛出IllegalArgumentException异常 */
int getColumnIndexOrThrow(String columnName)
/* 从给定的索引返回列名 */
String getColumnName(int columnIndex)
/* 返回一个字符串数组的列名 */
String[] getColumnNames()
/* 返回Cursor中的行数 */
int getCount()
/* 移动光标到第一行 */
boolean moveToFirst()
/* 移动光标到最后一行 */
boolean moveToLast()
/* 移动光标到下一行 */
boolean moveToNext()
/* 移动光标到一个绝对的位置 */
boolean moveToPosition(int position)
/* 移动光标到上一行 */
boolean moveToPrevious()

参考:
<SQLite教程>
<Android操作SQLite基本用法>
<Android数据存储与访问之-初见SQLite数据库>
<Android数据库储方式(一)-SQLite的基本操作>

Android SQLite使用的更多相关文章

  1. Android SQLite 通配符查询找不到参数问题

    使用Android SQLite中SQLiteDatabase类的query方法查询时,如果where中包含通配符,则参数会无法设置,如类似下面的方法查询时 SQLiteDatabase db = d ...

  2. Android+Sqlite 实现古诗阅读应用(三)

    往期传送门: Android+Sqlite 实现古诗阅读应用(一) Android+Sqlite 实现古诗阅读应用(二) 加入截图分享的功能. 很多应用都有分享的功能,我也想在我的古诗App里加入这个 ...

  3. Android+Sqlite 实现古诗阅读应用(二)

    传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择 ...

  4. Android Sqlite 数据库版本更新

      Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...

  5. Android SQLite总结(一) (转)

    Android SQLite总结(一)  郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...

  6. android SQLite使用SQLiteOpenHelper类对数据库进行操作

    android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580

  7. Android sqlite管理数据库基本用法

    Android操作系统中内置了sqlite数据库(有关sqlite数据库详细介绍见:http://zh.wikipedia.org/wiki/SQLite),而sqllite本身是一个很小型的数据库, ...

  8. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...

  9. Android Sqlite 导入CSV文件 .

    http://blog.csdn.net/johnnycode/article/details/7413111 今天遇到 Oracle 导出的12万条CSV格式数据导入 Android Sqlite ...

  10. Android sqlite数据库存取图片信息

    Android sqlite数据库存取图片信息 存储图片:bitmap private byte[] getIconData(Bitmap bitmap){ int size = bitmap.get ...

随机推荐

  1. 匿名函数lambda python

    lambda 的主体是一个表达式,不是一个代码块lambda 只有一行,仅仅能在lambda表达式种封装有限的逻辑进去匿名函数:需要一个函数,而又不想动脑筋去想名字 #普通函数的定义 def f(a, ...

  2. L2-032 彩虹瓶 (25 分)

    L2-032 彩虹瓶 (25 分)   彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里. 假设彩虹瓶里要按顺序装 N 种颜色的小 ...

  3. [bzoj1999][noip2007]Core树网的核

    好久没写题解了.这题不算太水就写一下题解. 话说回来,虽然不水但是挺裸.可以说题意即一半题解了. 我猜粘了题面也没有人去看的,所以直接人话题意了. 给一棵树,点数1e6,(当年noip的n当然是只有3 ...

  4. 通过学习制作长微博工具来了解水印的制作,及EditText中的内容在图片中换行显示

    长微博工具非常有用,140字的要求可能阻止你写更多的内容,于是长微博工具应运而生,虽然网上有很多长微博工具,但是我都不是很满意,所以自己想做一个,通过做这个长微博工具,我学习到了很多东西,有两个难点, ...

  5. 《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Huffman编码

    2014.07.06 16:47 简介: 给定一段有固定符号集合S构成的文本T,集合S中总共有n种符号.如果对于每种符号,使用一种不同的由‘0’和‘1’构成的位字符串来代替,比如: ‘a’->‘ ...

  6. 自动化测试(三)如何用python写个一函数,这个函数的功能是,传入一个数字,产生N条手机号,产生的手机号不能重复

    本期时间短没来得及写思路,不过我都加了注释,有问题可以@我 import randomimport timedef Phones(number):#生成手机号函数 s = "01234567 ...

  7. Python 3基础教程4-变量

    本文介绍变量,什么是变量呢,可以这样理解:变量是一个容器,这个容器可以用来存储值,而且可以被其他对象引用. 看看下面的demo.py # 这里介绍 变量 # 变量可以是数字var1 = 5print( ...

  8. Python编码、流程控制、格式化输出

    Python编码 初始编码: 电脑的传输,还有储存,实际上都是010101010 ASCII码: (American Standard Code for Information Interchange ...

  9. STL之set&multiset使用简介

    关于set,必须说明的是set关联式容器.set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序.应该注 ...

  10. hdu 1085 给出数量限制的母函数问题 Holding Bin-Laden Captive!

    Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...