1. 程式人生 > >android數據持久化存儲

android數據持久化存儲

針對 語句 str select語句 ets 添加 block gpo ace

一、文件存儲

  數據存儲到文件中:

  public void save(){

    String data = "Data to save";

    FileOutputStream out = null;

    BufferedWriter writer = null;

    try{

      out = openFileOutput("data",Context.MODE_PRIVATE);

      /*

       openFileOutput用於將數據存儲到指定文件中,返回的out是一個FileOutputStream對象(字節流),其中第一個

參數指文件名,第二個參數指文件操作模式,有兩種:

MODE_PRIVATE是默認操作模式,表示指定同樣文件名時,所寫入的內容將會覆蓋原文件中的內容;

MODE_APPEND表示如果該文件存在,就往文件裏追加內容,不存在就建立新文件.

      */

      writer = new BufferedWriter(new OutputStreamWriter(out));

       writer.write(data);

    }catch(IOExption e){

      e.printStackTrace();

    }finally{

      

      try{

        if(writer != null){

          writer.close();

}

      }catch(IOExption e){

        e.printStackTrace();

    }

  }

  數據從文件中讀取:

  public String load(){

    FileInputStream in = null;

    BufferedReader reader = null;

    StringBuilder content = new StringBuilder();

    try{

      in = openFileInput("data");

      reader = new BufferedReader(new FileInputReader(in));

      String line = "";

      While((line = reader.readerLine()) != null){

        content.append(line);

      }

    }catch(IOException e){

      e.printStackTrace();

    }finally{

      if(reader != null){

        try{

          reader.close();

        }catch(IOException e){

          e.printStackTrace();

        }

      }

    }

    return content.toString();

  }



二、SharedPreferences存儲(即使用“鍵值對”的方式存儲數據)

  存儲數據步驟:

    1、首先獲取SharedPreferences對象

      

      三種方式獲取:

        第一種:Context類中的getSharedPreferences()方法;

        第二種:Activity類中的get Preferences()方法;

        第三種:Preferences類中的getDefaultSharedPreferences()方法。

    2、然後向SharedPreferences文件存儲數據

      分三步:

        (1)調用SharedPreferences對象的edit()方法來獲取一個SharedPreferences.Editor對象;

        (2)向SharedPreferences.Editor對象中添加數據;

        (3)調用apply()方法將添加數據提交。

如:

        Shared Preferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();

        editor.putString("name","Qbin");

        editor.putString("age","25");

        editor.apply();

  讀取數據步驟:

    1、首先獲取SharedPreferences對象;

    2、用SharedPreferences對象中一系列get方法,對存儲的數據進行讀取。

     如:

       SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);

       String name = pref.getString("name","");

Int age = pref.getInt("age",0);



三、SQLite數據存儲(需要借助SQLiteOpenHelper抽象類)

  

 SQLiteOpenHelper抽象類:

    有2個構造方法:一般用其中參數最少也是最常用的構造方法 ( 第一個參數Context,第二個參數數據庫名,第三個參數是Cursor一般傳入null即可,第四個參數是數據庫

           版本號 );

    有2個抽象方法:分別是onCreate()和onUpgrade();

            技術分享圖片

    有2個實例方法:分別是getReadableDatabase()和getWritableDatabase();

          技術分享圖片

    如:

      創建數據庫:

      public class MyDatabaseHelper extends SQLiteHelper{

         public static final String CREATE_BOOK = "create table Book("

       +"id integer primary key autoincrement,"

       +"author text,"

       +"price real,"

       +"pages integer,"

       +"neme text)";

         //建表語句,其中integer表示整形,real表示浮點型,text表示文本

         private Context mContext;

         public MyDatabaseHelper(Context context , String name , SQLiteDatabase.CursorFactory factory , int version ){

           super(context , name , factory , version);

           mContext = context;

         }

         public void onCreate(SQLiteDatabase db){

    db.execSQL(CREATE_BOOK);

          // execSQL()方法可以執行insert、delete、update和CREATE TABLE之類有更改行為的SQL語句;

          //rawQuery()方法可以執行select語句。

          Toast.makeText(mContext , "Create succeeded", Toast.LENGTH_SHORT).show();

          }

         public void onUpgrade(SQLiteDatabase db , int oldVersion , int newVersion){

}

     }

  

升級數據庫(針對上面的數據庫進行升級,比如:除了BOOK表之外再添加一張Category表):

     public class MyDatabaseHelper extends SQLiteHelper{

         public static final String CREATE_BOOK = "create table Book("

       +"id integer primary key autoincrement,"

       +"author text,"

       +"price real,"

       +"pages integer,"

       +"neme text)";

      public static final String CREATE_CATEGORY = "create table Category("

         +"id integer primary key autoincrement,"

         +"category_name text,"

         +"category_code integer)";

         private Context mContext;

         public MyDatabaseHelper(Context context , String name , SQLiteDatabase.CursorFactory factory , int version ){

           super(context , name , factory , version);

           mContext = context;

         }

         public void onCreate(SQLiteDatabase db){

    db.execSQL(CREATE_BOOK);

        db.execSQL(CREATE_CATEGORY);

           Toast.makeText(mContext , ”Create succeeded” , Toast.LENGTH_SHORT).show();

          }

         public void onUpgrade(SQLiteDatabase db , int oldVersion , int newVersion){

       db.execSQL(CREATE_BOOK);

        db.execSQL(CREATE_CATEGORY);

        onCreate(db);

}

     }

    

    

      

android數據持久化存儲