10、Android数据存储
课程目标:
掌握Android中数据存储的几种方式
熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能
熟练使用SQLite3来存储数据
深入研究SQLite3数据库特性,并且比对与大型数据库的包括存储过程,主外键关联等特性
了解文件存储的内外存储分别 了解网络存储C/S结构原理 。
重点难点:SQLiteOpenHelper类的使用 SQLIte数据库的特性掌握
考核目标:
说出Android数据存储的几种形式 ?
Sqlite3能支持存储过程么,支持主外键关联么 ?
如何让自己的Setting程序与系统的Setting程序融合
一、Android数据存储初探
XML Share Preference
Binary File File <使用内部存储,使用扩展存储>
关系型数据库 SQLite3
网络访问 Network <Socket , Http,Https>
二、SharedPreference
2.1 最基本操作步骤
1) getSharedPreference
2) get SharedPreferences.Editor
3) Editor.commit()。
2.2 三种方式得到preference区别
1) public SharedPreferences getPreferences (int mode)
通过Activity对象获取,获取的是本Activity私有的Preference,保存在系统中的xml形式的文件的名称为这个Activity的名字,因此一个Activity只能有一个,属于这个Activity。
2) public SharedPreferences getSharedPreferences (String name, int mode)
因为Activity继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,以第一参数的name为文件名保存在系统中。
3)public static SharedPreferences getDefaultSharedPreferences (Context context)
PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存。
2.3 打造专业的User Preference
PreferenceActivity
PreferenceScreen..
. setOnPreferenceChangeListener...
2.4 如何嵌套系统preference
2.5 Subtopic
三、SQLite3
3.1 SQLite数据库简介
SQLite (http://www.sqlite.org/),是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
特征:轻量级,独立性,隔离性,跨平台,多语言接口,安全性。
3.2 总结
SQLite 是一个全面而又完整支持sql语句的文件型数据库
Sqlite 支持 事务 , 视图 , 索引,触发器 ,主外键约束
默认的必须给每张表的主键名字为_id
SqliteDatabase 可以用封装的insert ,update ,delete ,query 方法 ,也可以用execSql , rawSql 等原生方法
3.3 SQLiteOpenHelper
getReadableDatabase()
getWritableDatabase()
onCreate(SQLiteDatabase db , int oldVersion, int newVersion)
onOpen(SQLiteDatabase db)
onUpgrade(SQLiteDatabase db)
1)通过Helper , 建立好数据库表结构 - onCreate , onUpgrade。
2)调用helper实例 , 通过get***Database()得到DB对象。
3)通过DB对象实例来调用增删改查 ,insert()。
3.4 建立数据库,更新数据库: adb shell 看数据库
3.5 具体的数据操作:Add,Update,Search,Delete,批量更新和删除。
3.6 我们思考一下Sqlite3数据库引擎在哪儿? external/sqlite
思路:
如你来移植,对开源的项目,你是编译好类库放上来还是直接源码都放上来呢?
如果源码放上来,我们去官网下载源码 , 打开看看
去搜索一下源码
找到地址 。
3.7 我们来思考一下SQlite3连接方式实际是什么? libcore/sqlite-jdbc
3.8 表的主外键关系
3.9 表的视图
3.10 表的触发器,存储过程
3.11 Sqlite事务
beginTransaction
setTransactionSuccessful
endTransaction
10、Android数据存储的更多相关文章
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
- Android数据存储之GreenDao 3.0 详解
前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...
- 【Android开发日记】之入门篇(七)——Android数据存储(上)
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
- Android数据存储方式--SharedPreferences
Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...
- Android数据存储-通过SharedPreferences实现记住密码的操作
在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...
- Android - 数据存储 -存储文件
Android使用的文件系统和其他平台的基本磁盘的文件系统很相似.这里将要介绍如何使用File API在Android文件系统中读写文件. File对象适合按顺序读写大量的数据.例如,适合图片文件或者 ...
- Android - 数据存储 -存储键值对
如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI.SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们.每个SharedPr ...
- Android数据存储五种方式
1 使用SharedPreferences存储数据:常用于做本地缓存 2 文件存储数据:(1)data/data/<package name>/files目录内 (2)SDCard内 ...
- Android数据存储:SDCard
Android数据存储之SDCard 0.获取sd卡路径. 1.讲述 Environment 类. 2.讲述 StatFs 类. 3.完整例子读取 SDCard 内存 0.获取sd卡路径 方法一: p ...
随机推荐
- iOS sqlite数据库实现(转)
转载自:http://www.cnblogs.com/macroxu-1982/archive/2012/10/01/2709960.html 1 实现过程添加libsqlite3组件 选择项目后,在 ...
- tablib源代码学习
tablib简介 ----------- Tablib is a format-agnostic tabular dataset library, written in Python. Tablib ...
- .h头文件和.c文件的作用和区别
.h头文件和.c文件的作用和区别 在小工程中,.h的作用没有得到充分的使用,在大工程中才能充分体现出.h文件的作用. .h和.c文件都是代码.头文件好处有: 一:头文件便于共享,只需要添加一句“inc ...
- mir9-lua——《热血沙城》45度ARPG手游-Lua移植版
mir9——<热血沙城>,是9秒论坛开源的一个使用Cocos2d-x-2.2.1引擎开发的45度ARPG手游Demo,源代码为c++.mir9-lua是mir9的Lua移植版,使用Quic ...
- java接口与继承
class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } p ...
- [转载]获取当前日期和农历的js代码
原文地址: http://www.cnblogs.com/Gnepner/archive/2011/09/07/2169822.html 获取当前日期时间: function GetCurrentDa ...
- nginx上用fastcgi配置python环境
费了2天的功夫,翻阅了无数的中文.英文资料,终于搞定.写下此文留待以后翻阅用 本文环境,centOS 5.4 ,Nignx-0.8.49, Python 2.6.5 ========== ...
- Python利用ConfigParser读取配置文件
http://www.2cto.com/kf/201108/100384.html #!/usr/bin/python # -*- coding:utf-8 -*- import ConfigPars ...
- C/C++语言参数传递----函数/方法 参数的指针引用传递
int m_value = 1; void func(int *p) { p = &m_value; } int main(int argc, char *argv[]) { int n = ...
- winform学习日志(十九)----------真正三层架构之登录
摘要:一:三层构架的基础知识在项目开发的过程中,有时把整个项目分为三层架构,其中包括:表示层(UI).业务逻辑层(BLL)和数据访问层(DAL).三层的作用分别如下: 表示层:为用户提供交互操作界面, ...