SQLite简介
SQLite是可用c语言编写的开源嵌入式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。
- 支持高大2TB大小的数据库
- 以单个文件的形式存在
- 以B-Tree的数据结构形式存储在磁盘
特性主要包括:
- 轻量级 一个动态库、单文件
- 独立性 没有依赖、无序安装
- 隔离性 全部在一个文件夹中
- 跨平台 支持众多操作系统
- 多语言接口 支持众多编程语言
- 安全性 事务
关于事务处理的安全性问题
- 通过数据库上的独立性和共享锁来实现独立事务处理。
- 多个进程可以在同一时间从同一数据库读取数据,但只要一个进程可以写入数据。
关于SQLite的数据类型:
- SQLite支持NULL、INTEGER、REAL、TEXT、BLOB数据类型
- 一次代表:空值、整型值、浮点值、字符串值、二进制对象
动态数据类型(弱类型):
-当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则将会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储。
安全性:通过单一的独占和共享锁,进程要读写SQLite数据库内的数据时,要获得这个锁,这样就避免了其他进程乱用,提高了安全性。
在Android中如何使用SQLite:
- SQLiteDatabase
- SQLiteOpenHelper
使用内置函数操作数据库
1. ContentValues类
存储一组可以被ContentResolver处理的值,可以理解为它的对象存储了多个键值对
2. 使用ContentValues和内置函数插入数据库
ContentValues values = new ContentValues();
values.put("name", "xzhang76");
values.put("sex", "man");
values.put("age", 26);
sqLiteDatabase.insert("studentdb", null, values);
可以将values清空,并重新存值。
values.clear();
values.put("name", "xzhang65");
values.put("sex", "man");
values.put("age", 27);
sqLiteDatabase.insert("studentdb", null, values);
- 更新和删除
sqLiteDatabase.update("studentdb", values, "_id>?", new String[]{"4"});
sqLiteDatabase.delete("studentdb", "name like ?", new String[]{"%8%"});
- 通过Cursor类的getColumnNames()可以得到所有的列名
String[] columnNames = cursor.getColumnNames();
while (cursor.moveToNext()) { //moveToNext()可以移动到下一行
for(String columnName:columnNames) {
Log.i(TAG, cursor.getString(cursor.getColumnIndex(columnName)));
}
}