博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android学习笔记之十一数据存储(Shared Preferences、SQLite)
阅读量:7091 次
发布时间:2019-06-28

本文共 2590 字,大约阅读时间需要 8 分钟。

hot3.png

android数据的存储方式可以用标准的j2se的api文件存储和网络存储方式.以下是android的其他两种存储方式

1,Shared Preferences是一个简单键值对的xml格式的存储方式

     a,读取
        getPreferences (int mode) 返回SharedPreferences实例
 mode Activity.MODE_PRIVATE, Activity.MODE_WORLD_READABLE, Activity.MODE_WORLD_WRITEABLE
       
 getString (String key, String defValue) 获取数据
     b,写数据
       通过SharedPreferences(必须为MODE_PRIVATE或MODE_WORLD_WRITEABLE)实例的edit()返回Editor对象
       Editor.putString (String key, String value) 设置值
       Editor.commit() 提交保存
       Editor.clear()  清除所有数据
       Editor.remove (String key) 移除某一值

 

2,SQLite

    a,SQLiteDatabase类
     1),打开/关闭数据库
       openOrCreateDatabase(String name, int mode, CursorFactory factory)返回SQLiteDatabase实例 //数据库不存在则新建一个
       mode Context.MODE_PRIVATE, Context.MODE_WORLD_READABLE, Context.MODE_WORLD_WRITEABLE, Context.MODE_PRIVATE

       SQLiteDatabase类.close()关闭数据库

     2),执行数据库操作
       SQLiteDatabase.execSQL (String sql) //执行Sql语句
 
       long insert (String table, String nullColumnHack, ContentValues values)
       int update (String table, ContentValues values, String whereClause, String[] whereArgs)
       int delete (String table, String whereClause, String[] whereArgs)
       其中ContentValues是一个键值对,通过ContentValues.put方法设置列名和列值

       Cursor rawQuery (String sql, String[] selectionArgs) //执行的是语句

       Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
       Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
       Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having,
              String orderBy, String limit)
       其中:
    columns 显示列
    selection 条件where部分
    selectionArgs ?替换符号.如selection为name =? and age=?那么selectionArgs可以为 new  String[]{"abc","20"}
      
       Cursor类
         int getCount() 返回记录数
  boolean isClosed () 判断关闭
  boolean isFirst ()
  boolean isLast ()

  boolean moveToFirst ()

  boolean moveToLast ()
  boolean moveToNext ()
  boolean moveToPosition (int position)
  boolean moveToPrevious ()

  boolean isNull (int columnIndex) 判断是否为空

  XXX getXXX(int columnIndex) 读取某一列的数据

     3),事务

       SQLiteDatabase.beginTransaction()  //打开
       SQLiteDatabase.setTransactionSuccessful() //提交
       SQLiteDatabase.endTransaction()   //结束

    b,SQLiteOpenHelper

      通过该继承该类可以获取到数据库创建/打开/升级等信息
      须实现的方法
      onCreate(SQLiteDatabase db)     //数据库被创建时触发
      onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)      //升级数据库

      其他重写

      onOpen(SQLiteDatabase db) 书库打开是触发

      方法

         SQLiteDatabase getReadableDatabase ()
  synchronized SQLiteDatabase getWritableDatabase ()

无论是Shared Preferences还是SQLite都是程序私有的其他程序无法直接访问.要想访问其他程序的数据须实现Content Provider.

转载于:https://my.oschina.net/droidwolf/blog/285425

你可能感兴趣的文章
网络工程师成长日记413-长安大学交换机项目
查看>>
jenkins
查看>>
设置中奖概率
查看>>
第4章 类名作为形参和返回值
查看>>
Java 正则表达式
查看>>
CentOS6启动过程超详解分析
查看>>
日本互联网巨头Line和Mercari联手打造移动支付服务
查看>>
Rsync远程同步,实现下行 ,上行异地备份。配置rsync+inotify实时备份。
查看>>
狼厂项目实践:通用检索框架准实时流的设计与实现
查看>>
一键LNMP安装了哪些软件?安装目录在哪?
查看>>
企业为什么需要CRM客户管理系统
查看>>
备考干货 | 一份5A学长学姐带你正经“P(ai) M(a) P(i)”的攻略
查看>>
用WAPI安全网卡享受安全的无线网络
查看>>
T-SQL 高级查询
查看>>
编程能力与编程年龄
查看>>
分享学习Python的方法有哪些?
查看>>
怎样把PDF转换成PPT?迅捷PDF转换器来助力
查看>>
PDF怎么设置全屏动画,轻松提高工作效率
查看>>
将现有的VSAN添加至新的VCenter
查看>>
Http重定向https MPM模块 HTTPd常见配置 sendfile 20190227
查看>>