版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 26《好的故事》說課稿-2024-2025學(xué)年語文六年級上冊統(tǒng)編版
- 1場景歌說課稿-2024-2025學(xué)年統(tǒng)編版語文二年級上冊
- 2024年秋一年級道德與法治下冊 第二單元 我和大自然 5 風(fēng)兒輕輕吹說課稿 新人教版
- 18古詩三首浪淘沙(其一)說課稿-2024-2025學(xué)年六年級上冊語文統(tǒng)編版
- 8 設(shè)計(jì)制作小車(二) 說課稿-2024-2025學(xué)年科學(xué)四年級上冊教科版
- 23《月光曲》說課稿-2024-2025學(xué)年語文六年級上冊統(tǒng)編版
- 1 24時計(jì)時法(說課稿)-2024-2025學(xué)年三年級上冊數(shù)學(xué)人教版001
- 2023九年級道德與法治上冊 第三單元 文明與家園 第五課 守望精神家園第2框 凝聚價值追求說課稿 新人教版
- 2025北京市飼料采購合同新
- 2025建造船舶所要用到的合同
- 農(nóng)產(chǎn)品貯運(yùn)與加工考試題(附答案)
- 學(xué)校財(cái)務(wù)年終工作總結(jié)4
- 2025年人民教育出版社有限公司招聘筆試參考題庫含答案解析
- 康復(fù)醫(yī)學(xué)治療技術(shù)(士)復(fù)習(xí)題及答案
- 《血管性血友病》課件
- 2025年汽車加氣站作業(yè)人員安全全國考試題庫(含答案)
- 2024年司法考試完整真題及答案
- 高三日語一輪復(fù)習(xí)日語助詞「に」和「を」的全部用法課件
- 2024年山東省高考政治試卷真題(含答案逐題解析)
- 2024年執(zhí)業(yè)藥師繼續(xù)教育專業(yè)答案
- 2024-2025學(xué)年人教版七年級數(shù)學(xué)上冊期末達(dá)標(biāo)測試卷(含答案)
評論
0/150
提交評論