android学习笔记之十一数据存储(Shared Preferences、SQLite)

原创
2014/06/30 14:35
阅读数 120

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.

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部