




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Android數據存儲與訪問Android中的文件讀寫和其它JAVA或者VC程序一樣,Android提供了針對文件存儲的讀和寫操作。Activity的openFileOutput和openFileInput兩個函數,可以分別用于文件的寫和讀。文件的內容可以是文本、圖片或者音視頻等。默認情況下,Android的文件都存放在目錄/data/data/<package_name>/files/下面寫入文件//自定義的文件名;privatefinalStringMY_FILE=“agreement.txt";openFileOutput(String,int)openFileOutput()方法的第一參數用于指定文件名稱,如果文件不存在,Android會自動創建它。創建的文件保存在/data/data/<packagename>/files目錄openFileOutput()方法的第二參數用于指定操作模式,有四種模式Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。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)該函數用于從文件中讀取數據。第一個參數是文件名。從文件中讀取數據時,數據可能比較多。因此可以每次讀取一段固定長度的內容,并把這段內容放到內存中(ByteArrayOutputStream)。openFileInput.read()函數返回讀取的數據的長度。如果返回為-1,則表示文件已經全部讀取完了。Activity還提供了以下有用的方法:getCacheDir()用于獲取/data/data/<packagename>/cache目錄getFilesDir()方法:getFilesDir()方法用于獲取/data/data/<packagename>/files目錄。SD卡中的文件讀寫除了Android系統中data目錄下的文件讀寫,還可以訪問SD卡中的文件。要在模擬器中模擬SD卡文件的讀寫,需要在模擬器中進行編輯,如下所示。在androidmanifest.xml中添加SDCard的訪問權限:示例代碼判斷是否有SD卡獲得SD卡目錄,并在目錄下生成文件Environment.getExternalStorageState()方法用于獲取SDCard的狀態,如果手機裝有SDCard,并且可以進行讀寫,那么方法返回的狀態等于Environment.MEDIA_MOUNTED。生成的文件。。。SQLiteSQLite是一個開源的嵌入式關系數據庫,在2000年由D.RichardHipp發布SQLite數據庫不僅提高了運行效率,而且屏蔽了數據庫使用和管理的復雜性,程序僅需要進行最基本的數據操作,其他操作可以交給進程內部的數據庫引擎完成優點更加適用于嵌入式系統,嵌入到使用它的應用程序中占用非常少,運行高效可靠,可移植性好提供了零配置(zero-configuration)運行模式SQLite模塊SQLite數據庫采用了模塊化設計,由8個獨立的模塊構成,這些獨立模塊又構成了三個主要的子系統,模塊將復雜的查詢過程分解為細小的工作進行處理模塊之接口與編譯器接口由SQLiteCAPI組成,因此無論是應用程序、腳本,還是庫文件,最終都是通過接口與SQLite交互編譯器由分詞器和分析器組成分詞器和分析器對SQL語句進行語法檢查,然后把SQL語句轉化為底層能更方便處理的分層的數據結構,這種分層的數據結構稱為“語法樹”把語法樹傳給代碼生成器進行處理,生成一種針對SQLite的匯編代碼最后由虛擬機執行模塊之虛擬機SQLite數據庫體系結構中最核心的部分是虛擬機,也稱為虛擬數據庫引擎(VirtualDatabaseEngine,VDBE)與Java虛擬機相似,虛擬數據庫引擎用來解釋執行字節代碼虛擬數據庫引擎的字節代碼由128個操作碼構成,這些操作碼主要用以對數據庫進行操作,每一條指令都可以完成特定的數據庫操作,或以特定的方式處理棧的內容模塊之后端后端由B-樹、頁緩存和操作系統接口構成B-樹的主要功能就是索引,它維護著各個頁面之間的復雜的關系,便于快速找到所需數據頁緩存的主要作用就是通過操作系統接口在B-樹和磁盤之間傳遞頁面B-樹和頁緩存共同對數據進行管理特點輕量級
SQLite數據庫是一個輕量級的數據庫,適用于少量數據的應用;文件本質
SQLite數據庫支持大部分SQL語法,允許使用SQL語句操作數據庫,其本質是一個文件,不需要安裝啟動;數據讀寫SQLite數據庫打開只是打開了一個文件的讀寫流,如果有大數據量讀寫,需要高并發存儲,那么就不應該使用SQLite;通用性SQLite數據庫具有很強的移植性,可以運行在Windows,Linux,BSD,MacOSX和一些商用Unix系統,比如Sun的Solaris,IBM的AIXSQLite數據庫也可以工作在許多嵌入式操作系統下,例如QNX,VxWorks,PalmOS,Symbin和WindowsCE模塊化設計SQLite的核心大約有3萬行標準C代碼,模塊化的設計使這些代碼更加易于理解簡單例子創建數據庫、表插入數據的兩種方式:1)使用SQL語句2)使用insert函數更新某行數據數據查詢DB文件執行完上面的代碼后,系統就會在/data/data/[PACKAGE_NAME]/databases目錄下生成一個“test.db”的數據庫文件基本DB操作語句涉及到DB的“增刪查改”等基本操作的方法主要有兩種:利用executeSQL函數,直接執行SQL語句。采用各自的函數,包括下面幾個函數SQLiteDatabase.insert函數SQLiteDatabase.update函數SQLiteDatabase.delete函數1:生成/打開DB有兩種方法可以用來生成DB:直接調用openOrCreateDatabase(String,int,CursorFactory)函數。利用DatabaseHelper類,創建DB。我們建議利用這種方式來創建DB。定義要創建的數據庫的文件名、表名、版本號、每一列的列名等常量在構造函數中申明數據庫文件名和版本號利用SQL語句創建數據庫、表,定義表中每一列的類型。直接調用execSQL執行2:創建SQLiteDatabase實例一旦定義好SQLiteOpenHelper以后,可以調用SQLiteOpenHelper.getWritableDatabase()獲得SQLiteDatabase實例。如果是只讀的,也可以采用getReadableDatabase。實際上,getWritableDatabase也是調用了openOrCreateDatabase函數。3:操作表格一旦獲得SQLiteDatabase實例以后,我們就可以進行增刪查改等常用的數據庫操作了。為了更好的封裝數據庫的事務邏輯,我們一般單獨創建一個類,將針對數據庫的所有操作放在里面。上面的例子,假設我們要操作的是一個銀行賬號的表。如果我們要把所有的DB操作進行封裝,則可以建立一個操作類,如下所示。為了更好的操作,將表中每一行數據封裝成一個簡單的類,下面的例子中CAcntInfo就是例子,該類有三個成員:用戶名、賬號、銀行名稱。插入一行數據:注意下面兩種方式都是有效的表格操作的兩種方式直接調用execSQL函數,執行SQL語句。調用各自的insert,delete,update,query等函數插入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)參數sql
:要執行的SQL語句,可以使用"?"作為占位符;參數selectionArgs
:sql語句中的參數,按照次序依次替換占位符“?";最全面的查詢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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車制造業產銷數據表
- 物流運輸統計表-產品類型、運輸方式、運輸時間
- 人工智能素養測評數據分析與應用
- 春天來了作文200字11篇
- 平臺運營與人才培養機制的構建與完善
- 報銷申請與審核審批表
- 績效考核與評估反饋機制的優化設計
- 英語語言與文化測試題
- 技能培訓及證書發放證明(5篇)
- 特別聲明工作證明僅用于證明用途(5篇)
- 小學民法典主題班會教案
- 2025年江西報業傳媒集團招聘題庫帶答案分析
- 公司退貨流程管理制度
- MHD多相流體系統的建模與仿真-洞察闡釋
- 辦公軟件實操試題及詳細答案
- 礦產品銷售合作合同范本
- 米粉項目可行性分析報告
- 江蘇省常州市聯盟學校2022-2023學年高一下學期期末聯考數學試題(學生版)
- 2024-2025學年七年級下冊歷史期末測試模擬卷(統編版)(含答案)
- 2025年下半年山西晉城國投特種設備檢驗檢測限公司招聘6人易考易錯模擬試題(共500題)試卷后附參考答案
- 有效溝通技巧在護理中的應用試題及答案
評論
0/150
提交評論