Android中SqLite的使用详情
今天我就和大家分享一下在Android中如何使用SQLite。
首先,我们来了解一下SQLite,SQLite是一款轻型的嵌入式数据库,是遵守ACID(原子性、一致性、隔离性、持久性)的关联式数据库管理系统。
SQLite的特点:
1.轻量级
使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸比较小。
2.独立性(不需要安装)
SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
3.隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
4.跨平台
SQLite 目前支持大部分操作系统(windows,linux,Android,ios),不至电脑操作系统更在众多的手机系统也是能够运行
5.多语言接口
SQLite 数据库支持多语言编程接口。
6.安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。
SQLite数据类型:
一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。
SQLite具有以下五种常用的数据类型:
?
NULL: 表示一个NULL值
INTEGER: 用来存储一个整数,根据大小可以使用1,2,3,4,6,8位来存储.
REAL: IEEE 浮点数
TEXT: 按照字符串来存储
BLOB: 按照二进制值存储,不做任何改变.
要注意,这些类型是值本身的属性,而不是列的属性.但是为了和其他DBMS(以及SQL标准)兼容,在其create table语句中可以指定列的类型,为此,SQLite有个列相似性的概念(Column Affinity). 列相似性是列的属性,SQLite有以下几种列相似性:
TEXT: TEXT列使用NULL,TEXT或者BLOB存储任何插入到此列的数据,如果数据是数字,则转换为TEXT.
NUMERIC: NUMERIC列可以使用任何存储类型,它首先试图将插入的数据转换为REAL或INTEGER型的,如果成功则存储为REAL和INTEGER型,否则不加改变的存入.
INTEGER:和NUMERIC类似,只是它将可以转换为INTEGER值都转换为INTEGER,如果是REAL型,且没有小数部分,也转为INTEGER
REAL: 和NUMERIC类型 只是它将可以转换为REAL和INTEGER值都转换为REAL.
NONE:不做任何改变的尝试.
SQLite根据create table语句来决定每个列的列相似性.规则如下(大小写均忽略):
1. 如果数据类型中包括INT,则是INTEGER
2. 如果数据类型中包括CHAR,CLOB,TEXT则是TEXT
3. 如果数据类型中包括BLOB,或者没有指定数据类型,则是NONE
4. 如果数据类型中包括REAL,FLOA或者DOUB,则是REAL
5. 其余的情况都是NUMERIC
SQLiteDatabase的常用方法,方法名称及方法表示含义:
打开或创建数据库
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)、
插入一条记录
insert(String table,String nullColumnHack,ContentValues values)
删除一条记录
delete(String table,String whereClause,String[] whereArgs)
查询一条记录
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)
修改记录
update(String table,ContentValues values,String whereClause,String[] whereArgs)
执行一条SQL语句
execSQL(String sql)
关闭数据库
close()
在使用Sqlite的过程中,我们必须使用到一个辅助类————SQLiteOpenHelper
SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法.
SQLiteOpenHelper提供的常用方法,方法名称及方法表示含义:
构造方法,一般是传递一个要创建的数据库名称,版本等参数
SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)
创建数据库时调用
onCreate(SQLiteDatabase db)
版本更新时调用
onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)
创建或打开一个只读数据库
getReadableDatabase()
创建或打开一个读写数据库
getWritableDatabase()
源码下载地址:http://download.csdn.net/detail/littyzhon/9839805