




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Android數(shù)據(jù)存儲與訪問Android中的文件讀寫和其它JAVA或者VC程序一樣,Android提供了針對文件存儲的讀和寫操作。Activity的openFileOutput和openFileInput兩個函數(shù),可以分別用于文件的寫和讀。文件的內(nèi)容可以是文本、圖片或者音視頻等。默認情況下,Android的文件都存放在目錄/data/data/<package_name>/files/下面寫入文件//自定義的文件名;privatefinalStringMY_FILE=“agreement.txt";openFileOutput(String,int)openFileOutput()方法的第一參數(shù)用于指定文件名稱,如果文件不存在,Android會自動創(chuàng)建它。創(chuàng)建的文件保存在/data/data/<packagename>/files目錄openFileOutput()方法的第二參數(shù)用于指定操作模式,有四種模式Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數(shù)據(jù),只能被應用本身訪問Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內(nèi)容,否則就創(chuàng)建新文件。Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件如果希望文件被其他應用讀和寫,可以傳入:openFileOutput(“XXXX.txt",Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);讀取文件//自定義的文件名;privatefinalStringMY_FILE=“agreement.txt";openFileInput(String)該函數(shù)用于從文件中讀取數(shù)據(jù)。第一個參數(shù)是文件名。從文件中讀取數(shù)據(jù)時,數(shù)據(jù)可能比較多。因此可以每次讀取一段固定長度的內(nèi)容,并把這段內(nèi)容放到內(nèi)存中(ByteArrayOutputStream)。openFileInput.read()函數(shù)返回讀取的數(shù)據(jù)的長度。如果返回為-1,則表示文件已經(jīng)全部讀取完了。Activity還提供了以下有用的方法:getCacheDir()用于獲取/data/data/<packagename>/cache目錄getFilesDir()方法:getFilesDir()方法用于獲取/data/data/<packagename>/files目錄。SD卡中的文件讀寫除了Android系統(tǒng)中data目錄下的文件讀寫,還可以訪問SD卡中的文件。要在模擬器中模擬SD卡文件的讀寫,需要在模擬器中進行編輯,如下所示。在androidmanifest.xml中添加SDCard的訪問權限:示例代碼判斷是否有SD卡獲得SD卡目錄,并在目錄下生成文件Environment.getExternalStorageState()方法用于獲取SDCard的狀態(tài),如果手機裝有SDCard,并且可以進行讀寫,那么方法返回的狀態(tài)等于Environment.MEDIA_MOUNTED。生成的文件。。。SQLiteSQLite是一個開源的嵌入式關系數(shù)據(jù)庫,在2000年由D.RichardHipp發(fā)布SQLite數(shù)據(jù)庫不僅提高了運行效率,而且屏蔽了數(shù)據(jù)庫使用和管理的復雜性,程序僅需要進行最基本的數(shù)據(jù)操作,其他操作可以交給進程內(nèi)部的數(shù)據(jù)庫引擎完成優(yōu)點更加適用于嵌入式系統(tǒng),嵌入到使用它的應用程序中占用非常少,運行高效可靠,可移植性好提供了零配置(zero-configuration)運行模式SQLite模塊SQLite數(shù)據(jù)庫采用了模塊化設計,由8個獨立的模塊構成,這些獨立模塊又構成了三個主要的子系統(tǒng),模塊將復雜的查詢過程分解為細小的工作進行處理模塊之接口與編譯器接口由SQLiteCAPI組成,因此無論是應用程序、腳本,還是庫文件,最終都是通過接口與SQLite交互編譯器由分詞器和分析器組成分詞器和分析器對SQL語句進行語法檢查,然后把SQL語句轉化為底層能更方便處理的分層的數(shù)據(jù)結構,這種分層的數(shù)據(jù)結構稱為“語法樹”把語法樹傳給代碼生成器進行處理,生成一種針對SQLite的匯編代碼最后由虛擬機執(zhí)行模塊之虛擬機SQLite數(shù)據(jù)庫體系結構中最核心的部分是虛擬機,也稱為虛擬數(shù)據(jù)庫引擎(VirtualDatabaseEngine,VDBE)與Java虛擬機相似,虛擬數(shù)據(jù)庫引擎用來解釋執(zhí)行字節(jié)代碼虛擬數(shù)據(jù)庫引擎的字節(jié)代碼由128個操作碼構成,這些操作碼主要用以對數(shù)據(jù)庫進行操作,每一條指令都可以完成特定的數(shù)據(jù)庫操作,或以特定的方式處理棧的內(nèi)容模塊之后端后端由B-樹、頁緩存和操作系統(tǒng)接口構成B-樹的主要功能就是索引,它維護著各個頁面之間的復雜的關系,便于快速找到所需數(shù)據(jù)頁緩存的主要作用就是通過操作系統(tǒng)接口在B-樹和磁盤之間傳遞頁面B-樹和頁緩存共同對數(shù)據(jù)進行管理特點輕量級
SQLite數(shù)據(jù)庫是一個輕量級的數(shù)據(jù)庫,適用于少量數(shù)據(jù)的應用;文件本質
SQLite數(shù)據(jù)庫支持大部分SQL語法,允許使用SQL語句操作數(shù)據(jù)庫,其本質是一個文件,不需要安裝啟動;數(shù)據(jù)讀寫SQLite數(shù)據(jù)庫打開只是打開了一個文件的讀寫流,如果有大數(shù)據(jù)量讀寫,需要高并發(fā)存儲,那么就不應該使用SQLite;通用性SQLite數(shù)據(jù)庫具有很強的移植性,可以運行在Windows,Linux,BSD,MacOSX和一些商用Unix系統(tǒng),比如Sun的Solaris,IBM的AIXSQLite數(shù)據(jù)庫也可以工作在許多嵌入式操作系統(tǒng)下,例如QNX,VxWorks,PalmOS,Symbin和WindowsCE模塊化設計SQLite的核心大約有3萬行標準C代碼,模塊化的設計使這些代碼更加易于理解簡單例子創(chuàng)建數(shù)據(jù)庫、表插入數(shù)據(jù)的兩種方式:1)使用SQL語句2)使用insert函數(shù)更新某行數(shù)據(jù)數(shù)據(jù)查詢DB文件執(zhí)行完上面的代碼后,系統(tǒng)就會在/data/data/[PACKAGE_NAME]/databases目錄下生成一個“test.db”的數(shù)據(jù)庫文件基本DB操作語句涉及到DB的“增刪查改”等基本操作的方法主要有兩種:利用executeSQL函數(shù),直接執(zhí)行SQL語句。采用各自的函數(shù),包括下面幾個函數(shù)SQLiteDatabase.insert函數(shù)SQLiteDatabase.update函數(shù)SQLiteDatabase.delete函數(shù)1:生成/打開DB有兩種方法可以用來生成DB:直接調用openOrCreateDatabase(String,int,CursorFactory)函數(shù)。利用DatabaseHelper類,創(chuàng)建DB。我們建議利用這種方式來創(chuàng)建DB。定義要創(chuàng)建的數(shù)據(jù)庫的文件名、表名、版本號、每一列的列名等常量在構造函數(shù)中申明數(shù)據(jù)庫文件名和版本號利用SQL語句創(chuàng)建數(shù)據(jù)庫、表,定義表中每一列的類型。直接調用execSQL執(zhí)行2:創(chuàng)建SQLiteDatabase實例一旦定義好SQLiteOpenHelper以后,可以調用SQLiteOpenHelper.getWritableDatabase()獲得SQLiteDatabase實例。如果是只讀的,也可以采用getReadableDatabase。實際上,getWritableDatabase也是調用了openOrCreateDatabase函數(shù)。3:操作表格一旦獲得SQLiteDatabase實例以后,我們就可以進行增刪查改等常用的數(shù)據(jù)庫操作了。為了更好的封裝數(shù)據(jù)庫的事務邏輯,我們一般單獨創(chuàng)建一個類,將針對數(shù)據(jù)庫的所有操作放在里面。上面的例子,假設我們要操作的是一個銀行賬號的表。如果我們要把所有的DB操作進行封裝,則可以建立一個操作類,如下所示。為了更好的操作,將表中每一行數(shù)據(jù)封裝成一個簡單的類,下面的例子中CAcntInfo就是例子,該類有三個成員:用戶名、賬號、銀行名稱。插入一行數(shù)據(jù):注意下面兩種方式都是有效的表格操作的兩種方式直接調用execSQL函數(shù),執(zhí)行SQL語句。調用各自的insert,delete,update,query等函數(shù)插入public
long
insert
(String
table,
String
nullColumnHack,
ContentValues
values)
修改update
(String
table,
ContentValues
values,
String
whereClause,
String[]
whereArgs)
刪除delete
(String
table,
String
whereClause,
String[]
whereArgs)
查詢比較簡單的查詢Cursor
rawQuery
(String
sql,
String[]
selectionArgs)參數(shù)sql
:要執(zhí)行的SQL語句,可以使用"?"作為占位符;參數(shù)selectionArgs
:sql語句中的參數(shù),按照次序依次替換占位符“?";最全面的查詢Cursor
query
(boolean
distinct,
String
table,
String[]
columns,
String
selection,
String[]
selectionArgs,
String
groupBy,
String
having,
String
orderBy,
Str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司聚餐自助餐活動方案
- 公司桶裝水活動方案
- 公司研討活動方案
- 公司禮儀禮節(jié)活動方案
- 公司活力秀活動方案
- 公司組織趣聞活動方案
- 公司新年節(jié)目策劃方案
- 公司演唱會年會策劃方案
- 公司月會具體活動方案
- 公司新春活動策劃方案
- 國家安全教育的筆記
- GB/T 33592-2017分布式電源并網(wǎng)運行控制規(guī)范
- 答案二語習得
- 黃金的冶煉工藝流程
- 注塑成型工藝流程圖
- 美術學院 本科培養(yǎng)方案 - 清華大學 - Tsinghua University
- 項目延期申請表(樣本)
- 《中國腦卒中護理指導規(guī)范(2021年版)》課件
- 入團志愿書(2016版本)(可編輯打印標準A4) (1)
- 三基訓練習題集-風濕免疫科(題目及答案)
- 無損檢測射線常見缺陷圖集
評論
0/150
提交評論