Android數(shù)據(jù)存儲

Android中的數(shù)據(jù)存儲

  1. Context類為我們提供了一個OpenFileOutput()可以用將數(shù)據(jù)存儲到指定的文件中。第一個參數(shù)是文件名,第二個參數(shù)是模式:MODE_PRIVATE和MODE_APPEND
  2. Context還提供了OpenFileInput()進(jìn)行讀取bufferedReader.readLine()!=null時一直讀

SharedPreference存儲

該文件都是存放在包下

  • 獲取該對象
    1.Context類中 getSharedPreference();第一個參數(shù)指定文件名稱。第二個參數(shù)模式:MODE_PRIVAT(只有當(dāng)前應(yīng)用程序才可以進(jìn)行讀寫)和MODE_MULTI_PROCESS(多線程)
  1. Activity類getPreference()。
  2. Preference類中的靜態(tài)方法getDefaultSharedPreferences()
  • 得到對象之后,就可以開始向SharedPreference文件中存儲數(shù)據(jù)
  1. 先獲取Editor對象。edit();
  2. 添加數(shù)據(jù)putString()
  3. 提交數(shù)據(jù)commit(); (清除數(shù)據(jù)可以調(diào)用clear())

讀取數(shù)據(jù)更簡單,只需要SharedPreference.getXXX()就行。參數(shù)第一個是鍵第二個是默認(rèn)值

SQLite數(shù)據(jù)庫存儲

創(chuàng)建數(shù)據(jù)庫

  • 首先我們需要了解的SQliteOpenHelper幫助類。它是個抽象類所以我們必須自定義一個類繼承他。實現(xiàn)兩個方法和構(gòu)造器。

  • 在調(diào)用gerReadableDatabase()或getWritableDatabase()創(chuàng)建數(shù)據(jù)庫(如果數(shù)據(jù)庫已存在則直接打開),并且返回一個可對數(shù)據(jù)庫進(jìn)行讀寫操作的對象。

  • gerReadableDatabase()使用這個方法時,若數(shù)據(jù)庫不可寫入(如磁盤空間已滿)返回的對象以只讀方式去打開數(shù)據(jù)庫

  • getWritableDatabase()方法碰到上面情況則會拋出異常

  • SQliteOpenHelper中的兩個構(gòu)造方法,我們一般實現(xiàn)參數(shù)少的那個。

    • 第一個是Context,
    • 第二個參數(shù)是數(shù)據(jù)庫名字,創(chuàng)建數(shù)據(jù)庫時使用的就是這里指定的名稱
    • 第三個參數(shù)允許我們在查詢數(shù)據(jù)的時候返回一個自定義的Cursor,一般是null
    • 第四個參數(shù)是版本號用于升級

/data/data/<package name>/databases/目錄下。數(shù)據(jù)庫創(chuàng)建成功了后我們可以在cmd中使用如下命令:

  1. adb shell
  2. cd /data/data/<package name>/databases/
  3. ls我們可以查看到有兩個一個是我們創(chuàng)建的,另一個是XXX.db-journal是為了讓數(shù)據(jù)庫能支持事務(wù)而產(chǎn)生的臨時日志文件,大小為0kb.
  4. sqlite3 后面加數(shù)據(jù)庫的名字即可(借助sqlite來打開數(shù)據(jù)庫)
  5. .table(查看表) .schema(查看建表語句)

添加數(shù)據(jù)

  • 我們先獲取SQLiteDatabase對象

  • 然后使用ContentValues來對要添加的數(shù)據(jù)進(jìn)行組裝。

  • 接下來調(diào)用insert()方法將數(shù)據(jù)添加到表中。插入多條必須用完ContentValues對象之后clear();

      db.insert("Book",null,contentvalues);
    
  • 更新數(shù)據(jù)調(diào)用的是update();

  •   db.update("Book",values,"name=?",new String []{"The Davinci Code"});
    
  • 刪除數(shù)據(jù)

      db.delete("Book","pages>?",new String[]{"500"});
    
  • 查詢數(shù)據(jù)

      Cursor cursor=db.query("Book",null,null,null,null,null,null);
       遍歷cursor while(cusor.moveToNext()){ ....}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容