android第七章數(shù)據(jù)持久化操作_第1頁
android第七章數(shù)據(jù)持久化操作_第2頁
android第七章數(shù)據(jù)持久化操作_第3頁
android第七章數(shù)據(jù)持久化操作_第4頁
android第七章數(shù)據(jù)持久化操作_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Learnmore.

Android數(shù)據(jù)操作本章概覽持久化技術(shù)簡介文件存儲SharedPreferences存儲Sqllite數(shù)據(jù)庫基礎(chǔ)Sqlliste應(yīng)用實(shí)戰(zhàn)Android操作xml數(shù)據(jù)Android操作json數(shù)據(jù)持久化技術(shù)簡介內(nèi)存數(shù)據(jù)容易丟失,所以我們經(jīng)常會把某些重要數(shù)據(jù)存儲到文件或者數(shù)據(jù)庫中,以便在以后需要用到時提取出來Android系統(tǒng)提供了大致三種方式實(shí)現(xiàn)持久化:

文件

SharedPreference

數(shù)據(jù)庫文件存儲FileOutputStreamout=null;BufferedWriterwriter=null;try{out=openFileOutput("datatest",Context.MODE_PRIVATE);writer=newBufferedWriter(newOutputStreamWriter(out));writer.write(txtText.getText().toString());}catch(IOExceptione){e.printStackTrace();}finally{try{if(writer!=null){writer.close();}}catch(IOExceptionex){ex.printStackTrace();}}Android中使用openFileOutput方法來實(shí)現(xiàn)文件存儲,第一個參數(shù)是文件名,文件名不包含路徑,因?yàn)樗械奈募J(rèn)存儲到/data/data/包名下,第二個參數(shù)MODE_PRIVATE表示覆蓋已存在的文件,該參數(shù)還可以使用MODE_APPEND,表示在已存在的文件中追加內(nèi)容執(zhí)行完該程序后可以打開FileExploer,然后進(jìn)入/data/data/包名,會看到一個名字為datatest的文件,此時我們可以把文件導(dǎo)出到電腦中寫入文件讀取文件

FileInputStreamin=openFileInput("datatest");BufferedReaderreader=newBufferedReader(newInputStreamReader(in));Stringline="";StringBuffercontent=newStringBuffer();while(line!=null){line=reader.readLine();content.append(line);}SharedPreferences存儲SharedPreferences使用鍵值對的形式來存儲數(shù)據(jù),比文件存儲更方便Android提供三種方法得到SharedPreferences對象Context的getSharedPreferences()方法Activity的getPreferences()方法PreferenceManager的getDefaultSharedPreferences()方法

SharedPreferences寫數(shù)據(jù)//MODE_PRIVATE表示只在當(dāng)前的應(yīng)用程序中可用//MODE_MULTI_PROCESS表示可以在多個進(jìn)程中讀寫SharedPreferencesSharedPreferences.Editoreditor=getSharedPreferences("spdata",MODE_PRIVATE).edit();//可以添加不同類型的數(shù)據(jù)editor.putString("username","Jordan");editor.putInt("age",32);//調(diào)用commit提交數(shù)據(jù),完成數(shù)據(jù)存儲mit();此時會在/data/data/包/shared_prefs下生成一個spdata.xml文件SharedPreferences讀數(shù)據(jù)SharedPreferencessp=getSharedPreferences("spdata",MODE_PRIVATE);Stringusername=sp.getString("username","");intage=sp.getInt("age",0);getXXX()方法第一個參數(shù)是key,第二個參數(shù)是當(dāng)key找不到對應(yīng)的value時會返回的值Sqllite數(shù)據(jù)庫基礎(chǔ)Sqllite是一款輕量級的關(guān)系型數(shù)據(jù)庫Sqllite占用資源少,特別適合在移動設(shè)備上使用Android系統(tǒng)內(nèi)置了sqllite數(shù)據(jù)庫Sqlliste應(yīng)用實(shí)戰(zhàn)

創(chuàng)建數(shù)據(jù)庫升級數(shù)據(jù)庫增刪改查事務(wù)處理創(chuàng)建數(shù)據(jù)庫Sqliteapi提供了一個SQLiteOpenHelper幫助類,可以讓我們很方便的操作數(shù)據(jù)庫,但是它是一個抽象類,需要我們繼承并實(shí)現(xiàn)onCreate和onUpgrade,前者實(shí)現(xiàn)創(chuàng)建數(shù)據(jù)庫,后者實(shí)現(xiàn)升級數(shù)據(jù)庫查看數(shù)據(jù)庫和表1,在/data/data/包名/databases下有數(shù)據(jù)庫文件,但是看不到表的內(nèi)容2,Android提供adb工具,可以用來調(diào)試數(shù)據(jù)庫

在使用前需要在環(huán)境變量path后面追加platform-tools目錄

配置好后進(jìn)入dos,輸入adbshell,即可看到如下界面Adbshell用法Adbshell支持普通的shell語法cd:進(jìn)入某個目錄ls:查看目錄下所有內(nèi)容(其他目錄或文件)通過sqlite命令可以打開數(shù)據(jù)庫,語法是:sqlite3數(shù)據(jù)庫名

sqlite下有下面幾個簡單命令.table查看所有表.schema查看建表語句.quit或.exit退出數(shù)據(jù)庫升級數(shù)據(jù)庫當(dāng)某個數(shù)據(jù)庫已經(jīng)存在后,onCreate是不會調(diào)用的,假如要對數(shù)據(jù)庫表結(jié)構(gòu)做更改,需要重寫onUpgrade方法,而onUpgrade方法調(diào)用的前提是在創(chuàng)建時給出不同版本號增刪改查SQL方式API方式SQL方式增刪改使用SQLiteDatabase的execSQL方法,比如:

db.execSQL(“deletefromUserinfowheretoid=?”,newString[](“1”));查詢使用SQLiteDatabase的rawQuery方法,比如:Cursorcur=db.rawQuery("select*fromUserinfo",null);while(cur.moveToNext()){intid=cur.getInt(0);Stringusername=cur.getString(1);Stringsex=cur.getString(2);System.out.println(id+""+username+""+sex);

}API方式SQLiteDatabasedb=helper.getWritableDatabase();ContentValuesvalues=newContentValues();//添加一條數(shù)據(jù)values.put("username","abc");values.put("sex","男");db.insert("Userinfo",null,values);//清空values.clear();//添加另一條數(shù)據(jù)values.put("username","aky");values.put("sex","女");db.insert("Userinfo",null,values);//關(guān)閉數(shù)據(jù)庫db.close();添加數(shù)據(jù)可以在adbshell中通過select查詢API方式SQLiteDatabasedb=helper.getWritableDatabase();ContentValuesvalues=newContentValues();SQLiteDatabasedb=helper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put("username","AXY");

//參數(shù)列表:表名,修改值,where條件,where條件值db.update("Userinfo",values,"id=?",newString[]{id});

db.close();修改數(shù)據(jù)API方式SQLiteDatabasedb=helper.getWritableDatabase();db.delete("Userinfo","id=?",newString[]{id});db.close();刪除數(shù)據(jù)API方式

SQLiteDatabasedb=helper.getWritableDatabase();Cursorcur=db.query("Userinfo",null,null,null,null,null,null);while(cur.moveToNext()){intid=cur.getInt(0);Stringusername=cur.getString(1);Stringsex=cur.getString(2);System.out.println(id+""+username+""+sex);

}db.close();查詢數(shù)據(jù)該API參數(shù)很多,具體可以查看API文檔事務(wù)處理try{

//開啟事務(wù)db.begi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論