安卓数据库08_29
有哪些?四种
- SharedPrefeerance
- 文件储存
- SQLIte
- 网络储存
什么时候用?
数据量大,小, 开关状态, 持久性,电话薄,严格控制访问控制;
怎么用?
创建:db
数据库升级:onUpgrade;
数据库降级:LauncherProvider;
大小:
数据量:
DB储存在SD:
ContentProvider
是什么: 为了储存,获取数据,提供的统一结构,实现应用程序间数据的共享;
app:contentResolver——————binder--》ContentProvider-------URI---》四种数据库
URI与UriMatcher对比
UriMatcher:Scheme+authority+path
- Scheme:http.file,git,ftp
- UriMatcher():通过分隔符截取,落得List;
- *表示text的占位符
-
表示使用数字的占位符
ContentProvider批量处理
- 事务处理:
Android中SQL语言基础
与SQL差别
- SQLite不支持Drop column;
- 通过先复制,然后修改表名称来修改;
封装API的方式:
db.insert(String table, String NullColumnHach,ContentValues values);
db.update(String table, String NullColumnHach,ContentValues values);
db.delete (String table, String NullColumnHach,ContentValues values);
db.query (String table, String NullColumnHach,ContentValues values);
显式执行SQL语句:
db.rawQuery(String sql, String [] selectionArgs);
db.executeSQL(String sql );
db.executeSQL(String sql ,Object[] bindArgs);
#查询:
Select * form 表名称
Where 条件子句
Group by 分组字句
Having
Order by 排序子句
#插入
Insert into 表名称
Set 字段名=值
Where 条件子句
#更新
Update 表名
Set 字段名=值
Where 条件子句
#删除
Delete form 表名
Where 条件子句
数据库的优化思路
- Log分析:确认是否是数据库的问题
- 流程优化:确认数据库优化的方向
log分析:
- 界面白屏
- 耗时操作:
- 减少操作次数
- 进行缓存, 内存换时间
- 牺牲次要功能性能
优化思路:
- 事物批量:批量进行插入删除,更新
- 索引:堆排序搜索走索引
- 假处理:假删除和假保存
- 减少耗时操作:避免cursor遍历时做耗时操作
插入:可以借鉴123
查询借鉴24
更新借鉴1
删除借鉴13
均适用的包含:
快速收敛
- 慎用Select *
- Where 进行匹配
- Join操作,数量小的放前面, Join table1 Join table2;
减少查询
分部加载,减少查询范围;