《Android程序設(shè)計(jì)教程》課件第七章 Android數(shù)據(jù)存儲(chǔ)_第1頁(yè)
《Android程序設(shè)計(jì)教程》課件第七章 Android數(shù)據(jù)存儲(chǔ)_第2頁(yè)
《Android程序設(shè)計(jì)教程》課件第七章 Android數(shù)據(jù)存儲(chǔ)_第3頁(yè)
《Android程序設(shè)計(jì)教程》課件第七章 Android數(shù)據(jù)存儲(chǔ)_第4頁(yè)
《Android程序設(shè)計(jì)教程》課件第七章 Android數(shù)據(jù)存儲(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第七章Android數(shù)據(jù)存儲(chǔ)目錄7.1數(shù)據(jù)存儲(chǔ)方式簡(jiǎn)介7.2文件存儲(chǔ)7.3SharedPreferences的使用 7.4SQLite數(shù)據(jù)庫(kù)存儲(chǔ)7.5LitePal操作數(shù)據(jù)庫(kù)學(xué)習(xí)目標(biāo)了解數(shù)據(jù)存儲(chǔ)方式的特點(diǎn)掌握文件存儲(chǔ)、SharedPreferences存儲(chǔ)的使用掌握SQLite數(shù)據(jù)庫(kù)的增、刪、改、查的使用掌握LitePal插件操作數(shù)據(jù)庫(kù)7.1數(shù)據(jù)存儲(chǔ)方式簡(jiǎn)介Android中五種不同數(shù)據(jù)存儲(chǔ)方式:文件存儲(chǔ)SharedPreferences存儲(chǔ)SQLite數(shù)據(jù)庫(kù)存儲(chǔ)網(wǎng)絡(luò)存儲(chǔ)ContentProvider7.2文件存儲(chǔ)Android中的文件存儲(chǔ)與Java中的文件存儲(chǔ)類似,都是以I/O流的形式把數(shù)據(jù)存儲(chǔ)到文件中。不同點(diǎn)在于Android中的文件存儲(chǔ)分為外部存儲(chǔ)和內(nèi)部存儲(chǔ)兩種。外部存儲(chǔ)就是指把文件存儲(chǔ)到一些外部設(shè)備上,例如SD卡、設(shè)備內(nèi)的存儲(chǔ)卡等,屬于永久性存儲(chǔ)方式。使用這種類型存儲(chǔ)的文件可以共享給其他的應(yīng)用程序使用,也可以被刪除、修改、查看等,它不是一種安全的存儲(chǔ)方式。內(nèi)部存儲(chǔ)是指將應(yīng)用程序的數(shù)據(jù),以文件的形式存儲(chǔ)在應(yīng)用程序的目錄下(data/data/<packagename>/files)。這個(gè)文件屬于該應(yīng)用程序私有,如果其他應(yīng)用程序想要操作本應(yīng)用程序的文件,就需要設(shè)置權(quán)限。內(nèi)部存儲(chǔ)的文件隨著應(yīng)用程序的卸載而刪除,隨著應(yīng)用程序的生成而創(chuàng)建。7.3SharedPreferences的使用SharedPreferences是一個(gè)輕量級(jí)的存儲(chǔ)類,特別適合用于保存軟件配置參數(shù),例如用于登錄時(shí)的用戶名、密碼、性別等參數(shù)。SharedPreferences保存數(shù)據(jù),其實(shí)質(zhì)是用xml文件存放數(shù)據(jù),文件存放在/data/data/<packagename>/shared_prefs目錄下。在使用SharedPreferences進(jìn)行數(shù)據(jù)操作的基本步驟如下:(1)使用getSharedPreferences()方法獲取一個(gè)SharedPreferences實(shí)例對(duì)象。(2)使用SharedPreferences實(shí)例對(duì)象的edit()方法,獲取SharedPreferences.Editor編輯對(duì)象。(3)使用SharedPreferences.Editor編輯對(duì)象的putXxx()方法來保存數(shù)據(jù)。(4)使用SharedPreferences對(duì)象的getXxx()方法來讀取數(shù)據(jù)。(5)使用SharedPreferences.Editor編輯對(duì)象的commit()方法將數(shù)據(jù)提交到XML文件中。7.4SQLite數(shù)據(jù)庫(kù)存儲(chǔ)SQLite數(shù)據(jù)庫(kù)比傳統(tǒng)的數(shù)據(jù)庫(kù)更加適用于嵌入式系統(tǒng),因?yàn)樗加每臻g非常少,運(yùn)行高效可靠,可移植性好,并且提供了零配置(zero-configuration)運(yùn)行模式。SQLite數(shù)據(jù)庫(kù)的優(yōu)勢(shì)在于其嵌入到使用它的應(yīng)用程序中。這樣不僅提高了運(yùn)行效率,而且屏蔽了數(shù)據(jù)庫(kù)使用和管理的復(fù)雜性,程序僅需要進(jìn)行最基本的數(shù)據(jù)操作,其它操作可以交給進(jìn)程內(nèi)部的數(shù)據(jù)庫(kù)引擎完成。7.4.1創(chuàng)建數(shù)據(jù)庫(kù)Android為了能夠更加方便地管理數(shù)據(jù)庫(kù),專門提供了一個(gè)SQLiteOpenHelper幫助類。該類是一個(gè)抽象類,具有onCreate()和onUpgrade()兩個(gè)抽象方法,這就意味著我們需要?jiǎng)?chuàng)建一個(gè)自己的幫助類去繼承它,然后分別在這兩個(gè)方法中去實(shí)現(xiàn)創(chuàng)建、升級(jí)數(shù)據(jù)庫(kù)的邏輯。SQLiteOpenHelper幫助類中還有兩個(gè)非常重要的實(shí)例方法:getReadableDatabase()和getWritableDatabase()方法。這兩個(gè)方法都可以創(chuàng)建或打開一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù),并返回一個(gè)可對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫操作的對(duì)象。SQLiteOpenHelper幫助類中還有兩個(gè)構(gòu)造方法可供重寫,一般使用參數(shù)少一點(diǎn)的構(gòu)造方法即可。這個(gè)構(gòu)造方法中接收4個(gè)參數(shù),第一個(gè)參數(shù)是Context,必須要有它才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作;第二個(gè)參數(shù)是數(shù)據(jù)庫(kù)名,創(chuàng)建數(shù)據(jù)庫(kù)時(shí)使用的就是這里指定的名稱;第三個(gè)參數(shù)允許我們?cè)诓樵償?shù)據(jù)的時(shí)候返回一個(gè)自定義的Cursor,一般都是傳入null;第四個(gè)參數(shù)表示當(dāng)前數(shù)據(jù)庫(kù)的版本號(hào),可用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí)操作。7.4.2升級(jí)數(shù)據(jù)庫(kù)當(dāng)我們需要對(duì)數(shù)據(jù)庫(kù)中的表進(jìn)行刪除或增加時(shí),就可以使用SQLiteOpenHelper幫助類中onUpgrade()方法。7.4.3添加數(shù)據(jù)對(duì)數(shù)據(jù)的操作無非有四種,即CRUD,其中C代表添加(Create),R代表查詢(Retrieve),U代表更新(Update),D代表刪除(Delete)。Android提供了一系列的輔助性方法,使得在Android中不去編寫SQL語(yǔ)句,也能輕松完成所有的CRUD操作。SQLiteDatabase類中提供了一個(gè)insert()方法,這個(gè)方法就是專門用于添加數(shù)據(jù)的,其返回值是新數(shù)據(jù)插入的位置,即ID值。它接受三個(gè)參數(shù):第一個(gè)參數(shù)指定需要添加數(shù)據(jù)的表名;第二個(gè)參數(shù)用于在未指定添加數(shù)據(jù)的情況下給某些可為空的列自動(dòng)賦值NULL,直接傳入null即可;第三個(gè)參數(shù)是一個(gè)ContentValues對(duì)象,它提供了一系列的put()方法重載,用于向ContentValues中添加數(shù)據(jù),只需要將表中的每個(gè)列名以及相應(yīng)的待添加數(shù)據(jù)傳入即可。7.4.4更新數(shù)據(jù)SQLiteDatabase類中也提供了一個(gè)非常好用的update()方法,用于對(duì)數(shù)據(jù)進(jìn)行更新。這個(gè)方法接收四個(gè)參數(shù),第一個(gè)參數(shù)和insert()方法一樣,也是表名,在這里指定去更新哪張表里的數(shù)據(jù);第二個(gè)參數(shù)是ContentValues對(duì)象,就是要把更新數(shù)據(jù)在這里組裝進(jìn)去;第三、第四個(gè)參數(shù)用于約束更新某一行或某幾行中的數(shù)據(jù),不指定的話就是默認(rèn)更新所有行。7.4.5刪除數(shù)據(jù)SQLiteDatabase類中也提供了一個(gè)非常好用的delete()方法,用于刪除數(shù)據(jù)。這個(gè)方法有三個(gè)參數(shù),第一個(gè)參數(shù)仍然是表名,第二、第三個(gè)參數(shù)是用于約束刪除某一行或某幾行的數(shù)據(jù),不指定的話默認(rèn)就是刪除所有行。7.4.6查詢數(shù)據(jù)SQLiteDatabase類中還提供了一個(gè)query()方法用于對(duì)數(shù)據(jù)進(jìn)行查詢。這個(gè)方法的參數(shù)非常復(fù)雜,最短的一個(gè)方法重載也需要傳入7個(gè)參數(shù)。7.5LitePal操作數(shù)據(jù)庫(kù)LitePal是一款開源的Android數(shù)據(jù)庫(kù)框架,它采用了對(duì)象關(guān)系映射(ORM)的模式,并將我們平時(shí)開發(fā)最常用到的一些數(shù)據(jù)庫(kù)功能進(jìn)行了封裝,使得不用編寫一行SQL語(yǔ)句就可以完成各種建表和增刪改查的操作。7.5.1配置LitePalLitePal是一款開源的Android數(shù)據(jù)庫(kù)框架,采用了對(duì)象關(guān)系映射的模式。首先需要在GitHub上去下載LitePal開源庫(kù),其下載地址是/LitePalFramework/LitePal,根據(jù)自己的需要下載相應(yīng)版本就可以了。(1)創(chuàng)建一個(gè)Android應(yīng)用程序,將下載的jar文件拷貝到app/libs目錄里,然后右鍵點(diǎn)擊這個(gè)包,在彈出的菜單中選擇“AddAsLibrary”選項(xiàng),在彈出的對(duì)話框中點(diǎn)擊“確定”按鈕即可。打開app/build.gradle文件,在dependencies閉包中看到自動(dòng)添加了如下內(nèi)容:implementationfiles('libs/litepal-1.6.1.jar')則說明LitePal開源庫(kù)加載成功。其中最后的1.6.1是版本號(hào)的意思。(2)需要配置litepal.xml文件。右擊app/src/main目錄→New→Directory,創(chuàng)建一個(gè)assets目錄,然后在assets目錄下再新建一個(gè)litepal.xml文件,并編輯litepal.xml文件中的內(nèi)容如下。<?xmlversion="1.0"encoding="UTF-8"?><litepal><dbnamevalue="BookStore"></dbname><versionvalue="1"></version><list></list></litepal>其中,<dbname

溫馨提示

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

評(píng)論

0/150

提交評(píng)論