zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    贝赛尔曲线实现填充不规则图形,并且随手指运动
    当view为wrap_conten时获取一个view的具体宽高
    Scrapped or attached views may not be recycled
    installation failed with message INSTALL_FAILED_INSUFFICIENT_STORG
    RecycleView设置顶部分割线(记录一个坑)
    Java list.remove( )方法需要注意的地方
    JAVA forname classnotfoundexception 错误
    调用android的getColor()方法出现 java.lang.NoSuchMethodError: android.content.res.Resources.getColor
    JSONObject.parseObject
    设置抓包工具Fiddler的host
  • 原文地址:https://www.cnblogs.com/androidsj/p/3972482.html
Copyright © 2011-2022 走看看