SQLite数据存储

SQLite是一款开源的嵌入式数据库引擎,支持SQL92标准,可在多种操作系统上运行。其特点是轻量级、独立性、隔离性和跨平台。SQLite采用动态数据类型,允许在不匹配的情况下转换值。数据库事务通过独立性和共享锁确保安全性。在Android中,SQLite通过SQLiteDatabase和SQLiteOpenHelper进行操作,使用ContentValues和内置函数实现数据的插入、更新和删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQLite简介

SQLite是可用c语言编写的开源嵌入式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。

  • 支持高大2TB大小的数据库
  • 以单个文件的形式存在
  • 以B-Tree的数据结构形式存储在磁盘

特性主要包括:

  1. 轻量级 一个动态库、单文件
  2. 独立性 没有依赖、无序安装
  3. 隔离性 全部在一个文件夹中
  4. 跨平台 支持众多操作系统
  5. 多语言接口 支持众多编程语言
  6. 安全性 事务

关于事务处理的安全性问题

  • 通过数据库上的独立性和共享锁来实现独立事务处理。
  • 多个进程可以在同一时间从同一数据库读取数据,但只要一个进程可以写入数据。

关于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);
  1. 更新和删除
sqLiteDatabase.update("studentdb", values, "_id>?", new String[]{"4"});
sqLiteDatabase.delete("studentdb", "name like ?", new String[]{"%8%"});
  1. 通过Cursor类的getColumnNames()可以得到所有的列名
String[] columnNames = cursor.getColumnNames();
while (cursor.moveToNext()) { //moveToNext()可以移动到下一行
for(String columnName:columnNames) {
Log.i(TAG, cursor.getString(cursor.getColumnIndex(columnName)));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值