sqlic數(shù)據(jù)庫在android平臺上的應用_第1頁
sqlic數(shù)據(jù)庫在android平臺上的應用_第2頁
sqlic數(shù)據(jù)庫在android平臺上的應用_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

sqlic數(shù)據(jù)庫在android平臺上的應用

1android軟件開發(fā)現(xiàn)狀android是谷歌于2007年宣布的基于linux平臺的開源手機操作系統(tǒng)的名稱。平臺包括操作系統(tǒng)、中間組件、界面和應用程序。它被稱為是第一個真正開放和完整的移動惡意軟件。它具有相當?shù)拈_放性、豐富的硬件平臺支持、自由的第三方軟件市場以及谷歌服務的結合。隨著Android在智能手機市場上的迅速崛起,2011年7月推出的Android3.2已經(jīng)開始支持7英寸設備,并引入了應用顯示縮放功能,可以讓那些針對手機開發(fā)的應用,更平滑的顯示在平板電腦上。國內外也已經(jīng)有越來越多的專家正在將開源的Android向各種嵌入式硬件平臺移植,這些都意味著,Android正在從一個單純的智能手機操作系統(tǒng)向多元化的嵌入式操作系統(tǒng)轉變,未來會涌現(xiàn)出更多基于Android的嵌入式應用開發(fā)。2roid中常用的存儲方式作為應用開發(fā)中非常重要的一環(huán),數(shù)據(jù)存儲從來都是開發(fā)過程中不可回避的關鍵技術。在Android中,可供選擇的存儲方式有五種,分別是:系統(tǒng)配置,文件存儲,SQLite數(shù)據(jù)庫方式,內容提供器(Contentprovider)和網(wǎng)絡。其中,前三種方式主要用于應用程序的內部存儲,后兩種主要用于外部存儲。實際應用開發(fā)中,主要使用前三種數(shù)據(jù)存儲的方式。(1)roperwells類為了保存應用程序的系統(tǒng)配置信息,Android平臺提供了SharedPreferences類,它是一個輕量級的存儲類。通過SharedPreferences可以將NVP(Name/ValuePair,名稱/值對)保存在Android的文件系統(tǒng)中。(2)流式文件的讀取Android使用的是基于Linux的文件系統(tǒng),允許應用程序創(chuàng)建僅能夠自身訪問的私有文件,用于應用數(shù)據(jù)的存取。文件可以保存在設備的內部存儲器上,還可以保存在SD卡等外部存儲設備中。在文件的訪問方式上,Android系統(tǒng)不僅支持標準Java的IO類和方法,還提供了能夠簡化讀寫流式文件過程的函數(shù),如openFileOutput()、openFileInput()等。值得注意的是,Android中每一個應用程序都使用不同的UserID,因此,創(chuàng)建的文件僅應用程序自身可見。若兩個程序之間需要進行數(shù)據(jù)交換,就必須通過前面提到的外部數(shù)據(jù)存儲方式ContentProvider。(3)android平臺的信息存儲模式考慮到節(jié)省系統(tǒng)資源,Andriod選擇并封裝了了開源的超輕量級嵌入式數(shù)據(jù)庫SQLite。SQLite由D.RichardHipp開發(fā),SQLite3.0全部源代碼不足3萬行,編譯后的動態(tài)鏈接庫大小為300kb左右,管理的數(shù)據(jù)量達到2TB,提供B-Tree存儲數(shù)據(jù)的模式,數(shù)據(jù)以ASCII碼形式存儲,支持SQL快速查詢,具有小、快、簡單、可靠、安全、穩(wěn)定、完全免費等特點。Android提供了兩個類,用于簡化SQLite數(shù)據(jù)庫的操作。第一個是SQLiteOpenHelper,該類主要用于自動完成打開、關閉數(shù)據(jù)庫,當數(shù)據(jù)庫不存在的情況下還可自動創(chuàng)建數(shù)據(jù)庫,并根據(jù)需要更新數(shù)據(jù)庫。第二個是SQLiteDatabase類,該類封裝了數(shù)據(jù)庫操作的API,主要用于查詢數(shù)據(jù)庫、向數(shù)據(jù)庫中新建數(shù)據(jù)項、刪除數(shù)據(jù)項等。創(chuàng)建一個數(shù)據(jù)庫的一般流程如下:(1)根據(jù)應用設計出所需要的數(shù)據(jù)表格。(2)在應用程序中,通過繼承和改寫SQLiteOpenHelper,創(chuàng)建、打開數(shù)據(jù)庫。(3)創(chuàng)建SQLiteDatabase對象,建立數(shù)據(jù)庫接口。(5)創(chuàng)建數(shù)據(jù)庫的查詢接口,實現(xiàn)查詢操作。應用程序訪問SQLite數(shù)據(jù)庫的模型如圖1所示。3sqlica實現(xiàn)下面,以電話簿為例,給出在Android平臺上進行SQLite數(shù)據(jù)庫應用開發(fā)的具體過程與方法。電話簿表格中設置的字段有:姓名,電話,郵箱等。1)新建項目MySQLite,在src目錄下新建一個PhoneBook.java類,并在該類中聲明數(shù)據(jù)庫的基本信息,包括數(shù)據(jù)庫文件的名稱、數(shù)據(jù)庫表格名稱和數(shù)據(jù)庫版本,以及數(shù)據(jù)庫表中的屬性名稱等。接下來,在該類中添加一個SQLiteOpenHelper的子類DBOpenHelper,實現(xiàn)數(shù)據(jù)庫的創(chuàng)建和打開。在DBOpenHelper類的構造函數(shù)中,通過調用SQLiteDatabase對象的execSQL()方法,執(zhí)行創(chuàng)建表的SQL命令。值得注意的是,繼承SQLiteOpenHelper類必須重載兩個函數(shù):onCreate()函數(shù)和onUpgrade()函數(shù)。onCreate()函數(shù)在數(shù)據(jù)庫第一次建立時被調用,一般用來創(chuàng)建數(shù)據(jù)庫中的表,并做適當?shù)某跏蓟ぷ?。onUpgrade()函數(shù)在數(shù)據(jù)庫需要升級時被調用,一般用來刪除舊的數(shù)據(jù)庫表,并將數(shù)據(jù)轉移到新版本的數(shù)據(jù)庫表中。具體代碼如下:接下來,在DBOpenHelper類中定義一個open()函數(shù),用來初始化SQLiteDatabase類的對象db并打開數(shù)據(jù)庫,該函數(shù)調用了SQLiteOpenHelper類的getWritableDatabase()函數(shù)和getReadableDatabase()函數(shù)。這兩個函數(shù)會根據(jù)數(shù)據(jù)庫是否存在、版本號和是否可寫等情況,決定在返回數(shù)據(jù)庫對象前,是否需要建立數(shù)據(jù)庫。最后還要在DBOpenHelper類中定義close()函數(shù),通過調用SQLiteDatabase對象的close()方法關閉數(shù)據(jù)庫。當數(shù)據(jù)庫使用完畢時,必須及時調用此函數(shù)。(2)數(shù)據(jù)庫創(chuàng)建成功后,只要利用SQLiteDatabase類的對象db建立好連接,即可通過下面兩種途徑,完成數(shù)據(jù)的添加、刪除、更新等操作。一種是調用SQLiteDatabase類封裝的insert()、delete()、update()等方法,另一種是調用SQLiteDatabase類封裝的execSQL()方法執(zhí)行SQL語句來完成相應操作。下面是執(zhí)行添加和刪除的具體代碼。(3)數(shù)據(jù)庫的查詢。SQLiteDatabase類的方法rawQuery()用于執(zhí)行select語句,查詢數(shù)據(jù)庫獲得目標記錄集。必須說明,Android中查詢返回的是Cursor對象,即結果集游標。Cursor類提供了各種導航方法,用于對結果集進行隨機訪問。在仿真器上運行電話簿,可以看到數(shù)據(jù)庫中的測試信息,如圖2所示。4數(shù)據(jù)庫的實現(xiàn)Android為應用程序提供了由內

溫馨提示

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

評論

0/150

提交評論