Android - 持久化

一、文件存储

  Context类提供openFileOutput、openFileInput;参数:文件名(不可以包含路径)、文件操作模式(MODE_PRIVATE、MODE_APPEND)

  文件默认存储到/data/data/<packagename>/files/目录下;借助DDMS的File Explorer可以查看具体内容;

二、SharedPreferences 存储

  SharedPreferences 是使用键值对的方式来存储数据,文件存储在 /data/data/<packagename>/shared_prefs/目录下,使用XML格式管理数据;

  首先需要获取到 SharedPreferences 对象,调用 edit()方法获取一个 SharedPreferences.Editor 对象,向该对象添加数据(putString()),最后调用commit();

  1)Context 类中的 getSharedPreferences() 方法;

  2)Activity 类中的 getPreferences() 方法;总是将活动的类名作为 SharedPreferences 的文件名;

  3)PreferenceManager 类中的 getDefaultSharedPreferences() 方法;自动使用应用程序的包名作为前缀命名文件;

1
2
3
4
SharedPreferences.Editor editor=getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name", "Tom");
editor.putInt("age", 15);
editor.commit();

三、SQLite 数据库存储

  1、SQLiteOpenHelper 抽象类

    抽象方法:onCreate() 、onUpgrade(),创建和升级数据库逻辑

    实例方法:getReadableDataBase() 、getWritableDatabase() 创建或打开一个现有数据库,SQLiteDatabase ;

  2、使用adb工具查看数据库:1) sdk的platform-tools 目录下执行命令 adb shell 就进入设备的控制台;

                  2) cd 到/data/data/<packagename>/databases/ 目录;

                  3) 可使用 ls 查看文件列表,使用sqlite3 databaseName 打开数据库;

                  4) 数据库操作命令有:.table .schema 

  3、Sqlite 数据类型:integer-整型、text-文本类型、real-浮点型、blob-二进制类型;

  4、使用SQLiteDatabase进行CRUD操作;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ContentValues values=new ContentValues();
values.put("price", 10.99);
db.update("Book", values, "name=?", new String[]{"The Lost Symbol"});
 
//
 
Cursor cursor=db.query("Book",null,null,null,null,null,null);
if(cursor.moveToFirst()){
    do{
        String name=cursor.getString(cursor.getColumnIndex("name"));
        String author=cursor.getString(cursor.getColumnIndex("author"));
        int pages=cursor.getInt(cursor.getColumnIndex("pages"));
        double price=cursor.getDouble(cursor.getColumnIndex("price"));
         
        Log.d("MainActivity",name+"|"+author+"|"+pages+"|"+price);
    }while(cursor.moveToNext());
}
cursor.close();

  5、直接执行SQL操作数据库:db.execSql(strSql)、db.rawQuery(queryStr);SQL中的占位符使用「?」

  6、使用事务:

  

  

  

posted @   chenyizh  阅读(128)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示