類型1:使用SharedPreferences存儲數據。
SharedPreferences是Android平臺上的壹個輕量級存儲類,主要保存壹些常用的配置,比如窗口狀態。壹般在Activity中重載窗口狀態,使用SharedPreferences保存,提供Android平臺上常規的長整型、Int型、String型保存。
其本質是基於XML文件存儲鍵值對數據,通常用來存儲壹些簡單的配置信息。
它的存儲位置是/data/data/ /shared_prefs目錄。
SharedPreferences對象本身只能獲取數據,不支持存儲和修改。存儲修改通過編輯器對象實現。
實現SharedPreferences存儲的步驟如下:
1.根據上下文獲取SharedPreferences對象。
其次,使用edit()方法獲取編輯器對象。
3.通過編輯器對象存儲鍵值對數據。
第四,通過commit()方法提交數據。
與SQLite數據庫相比,SharedPreferences對象更加方便簡潔,省去了創建數據庫、創建表格、編寫SQL語句等諸多操作。但是SharedPreferences也有自己的缺點,比如它存儲boolean、int、float、long、String五種簡單數據類型的功能,比如它不能進行條件查詢。所以SharedPreferences的數據存儲操作再簡單,也只能是存儲方式的補充,不能完全替代SQLite數據庫等其他數據存儲方式。
類型2:內部文件存儲數據。
至於文件存儲,Activity提供了openFileOutput()方法,可用於將數據輸出到文件。具體實現過程和J2SE環境下保存數據到文件壹樣。
文件可以用來存儲大量的數據,如文本、圖片、音頻等。
默認位置:/data/data/ /files/***。***。
openFileOutput()方法的第壹個參數用於指定文件名,不能包含路徑分隔符“/”。如果文件不存在,Android會自動創建它。
創建的文件保存在/data/data//files目錄下,如/data/data/cn . it cast . action/files/it cast . txt,點擊Eclipse菜單窗口-顯示視圖-其他,展開對話框窗口中的android文件夾。選擇下面的文件資源管理器視圖,然後在文件資源管理器視圖中展開/data/data//files目錄以查看該文件。
openFileOutput()方法的第二個參數用於指定操作模式。有四種模式,即:
語境。MODE_PRIVATE = 0
語境。MODE_APPEND = 32768
語境。MODE_WORLD_READABLE = 1
語境。MODE_WORLD_WRITEABLE = 2
語境。MODE_PRIVATE:是默認的操作模式,意味著文件是私有數據,只能由應用程序自己訪問。在這種模式下,寫入的內容將覆蓋原始文件的內容。如果希望將新寫入的內容追加到原始文件中。妳可以使用上下文。模式_追加。
語境。MODE_APPEND:模式會檢查文件是否存在,如果存在,會將內容追加到文件中,否則會創建壹個新文件。
語境。模式_世界_可讀和上下文。mode _ world _ writable用於控制其他應用程序是否有讀寫該文件的權限。
MODE_WORLD_READABLE:表示當前文件可以被其他應用程序讀取;
Mode _ world _ writable:表示當前文件可以被其他應用程序寫入。
如果希望文件被其他應用程序讀寫,可以傳入:openfile output ("itcast.txt ",context . mode _ world _ readable+context . mode _ world _ writable);Android有自己的安全模型。當應用程序(。apk)時,系統將為其分配壹個用戶id。當應用程序想要訪問文件等其他資源時,它需要userid匹配。默認情況下,任何應用程序、sharedpreferences和數據庫創建的文件都應該是私有的(位於/data/data//files中),其他程序不能訪問它們。
除非您指定上下文。模式_世界_可讀或上下文。mode _ world _ writable當妳創建它的時候,只有這樣其他程序才能正確訪問它。私有文件只能由創建該文件的應用程序訪問。如果您希望該文件由其他應用程序讀寫,您可以指定上下文。模式_世界_可讀和上下文。創建文件時的mode _ world _ writable權限。
Activity還提供了getcached()和get filedir()方法:getcached()方法用於獲取/data/data//cache目錄,get filedir()方法用於獲取/data/data//files目錄。
類型3:外部文件存儲數據。
將文件保存在SDCard中:
使用活動的openFileOutput()方法保存文件,這些文件存儲在移動電話空間中。壹般手機的存儲空間都不是很大,存儲壹些小文件還是可以的。如果想存儲視頻之類的大文件,不太可行。對於視頻這樣的大文件,我們可以存儲在SDCard中。
SDCard是做什麽的?妳可以把它想象成移動硬盤或者u盤。要在模擬器中使用SDCard,需要先創建壹個SDCard(當然不是真正的SDCard,只是壹個鏡像文件)。
可以在Eclipse創建仿真器的時候創建壹個SDCard,也可以使用DOS命令,如下:在Dos窗口中輸入android SDK安裝路徑的tools目錄,輸入以下命令創建壹個容量為2G的SDCard。文件後綴可以隨意取。建議使用。img:mksdcard 2048 MD:\ Android tool \ sdcard . img訪問程序中的SD card,需要申請訪問SD卡的權限。
在AndroidManifest.xml中添加訪問SDCard的權限,如下所示:
要在SDCard中存儲文件,程序首先要確定手機是否裝有SDCard,是否可以讀寫。
註意:要訪問SDCard,必須在AndroidManifest.xml中添加訪問SDCard的權限
環境的方法。getExternalStorageState()用於獲取SDCard的狀態。如果手機裝有SDCard並且可以讀寫,則該方法返回的狀態等於環境。媒體安裝。
環境的方法。getExternalStorageDirectory()用於獲取SDCard的目錄。當然,要獲取SDCard的目錄,也可以寫:
類型4: SQLite數據庫存儲數據。
SQLite是壹個輕量級的嵌入式數據庫引擎,支持SQL語言,性能好,占用內存少。另外,它是開源的,任何人都可以使用。許多開源項目(Mozilla、PHP、Python)都使用SQLite。SQLite由以下組件組成:SQL編譯器、內核、後端和附件。SQLite通過使用虛擬機和虛擬數據庫引擎(VDBE ),使得調試、修改和擴展SQLite內核更加方便。
特點:
對於資源有限的設備,
如果沒有服務器進程,
所有數據都存儲在同壹個文件中,跨平臺,
可以自由復制。
SQLite基本符合SQL-92標準,與其他主流SQL數據庫沒有區別。它的優點是效率高,Android運行時環境包含了完整的SQLite。
SQLite和其他數據庫最大的區別就是對數據類型的支持。創建表時,可以在CREATE TABLE語句中指定列的數據類型,但是可以將任何數據類型放在任何列中。當壹個值被插入數據庫時,SQLite將檢查它的類型。如果類型與關聯的列不匹配,SQLite將嘗試將值轉換為列的類型。如果無法轉換,該值將存儲為自己的類型。例如,您可以將壹個字符串放在整數列中。SQLite稱之為“清單類型化”。此外,SQLite不支持壹些標準的SQL函數,尤其是外鍵約束、嵌套transcaction、右外連接和全外連接以及壹些ALTER TABLE函數。除了以上功能,SQLite是壹個完整的SQL系統,有完整的觸發器,事務等等。
Android集成了SQLite數據庫。Android在運行時集成了SQLite,因此每個Android應用程序都可以使用SQLite數據庫。
對於熟悉SQL的開發者來說,在Android開發中使用SQLite相當簡單。但是JDBC會消耗太多系統資源,所以JDBC不適合內存有限的手機。因此,Android提供了壹些新的API來使用SQLite數據庫,程序員需要在Android開發中學習使用這些API。
數據庫存儲在data/ /databases/中。在Android開發中使用SQLite數據庫活動可以通過內容提供商或服務訪問數據庫。
創建數據庫Android不會自動提供數據庫。要在Android應用程序中使用SQLite,必須創建自己的數據庫,然後創建表、索引和數據。
Android提供了SQLiteOpenHelper來幫助妳創建數據庫。通過繼承SQLiteOpenHelper類,可以很容易地創建數據庫。SQLiteOpenHelper類封裝了用於根據開發應用程序的需要創建和更新數據庫的邏輯。
SQLiteOpenHelper的子類至少需要實現三個方法:
1構造函數,調用父類SQLiteOpenHelper的構造函數。這個方法需要四個參數:上下文(例如,壹個活動)、數據庫名稱、壹個可選的遊標工廠(通常為Null)和壹個表示您正在使用的數據庫模型版本的整數。
2 onCreate()方法,該方法需要壹個SQLiteDatabase對象作為參數,並根據需要為該對象填充表格和初始化數據。
3 onUpgrage()方法,這個方法需要三個參數,壹個SQLiteDatabase對象,壹個舊版本號和壹個新版本號,這樣就可以知道如何把壹個數據庫從舊模型改成新模型。
接下來,我們將討論如何創建表、插入數據、刪除表等等。調用getReadableDatabase()或getWriteableDatabase()方法,可以得到壹個SQLiteDatabase的實例。調用的具體方法取決於您是否需要更改數據庫的內容:
update()方法有四個參數,即表名、表示列名和值的ContentValues對象、可選的WHERE條件和填充WHERE語句的可選字符串,該字符串將替換“?”在WHERE條件中。馬克。
Update()根據條件更新指定列的值,所以用execSQL()方法也可以達到同樣的目的。WHERE條件及其參數類似於所使用的其他SQL APIs。
delete()方法的用法類似於update(),使用表名、可選的WHERE條件和相應的字符串來填充WHERE條件。查詢數據庫類似於插入、更新、刪除。使用SELECT從SQLite數據庫中檢索數據有兩種方法。
1.使用rawQuery()直接調用SELECT語句;使用query()方法構建查詢。
顧名思義,原始查詢()是最簡單的解決方案。這樣,就可以調用SQL SELECT語句了。
例如:cursor c = db . raw query(" select name from SQLite _ master where type = ' table ' and name = ' my table ' ",null);
在上面的例子中,我們查詢SQLite系統表(sqlite_master)來檢查table表是否存在。返回值是壹個遊標對象,其方法可以叠代查詢結果。如果查詢是動態的,使用這種方法會非常復雜。
比如在程序編譯時無法確定需要查詢的列時,使用query()方法會方便很多。
Regular Queries query()方法使用SELECT語句段構建查詢。SELECT語句的內容用作query()方法的參數,例如要查詢的表名、要獲取的字段名、WHERE條件(包括可選的位置參數),以替換WHERE條件、GROUP BY條件和HAVING條件中的位置參數值。除了表名,其他參數都可以為空。因此,前面的代碼片段可以寫成:
String[] columns={"ID "," inventory " };
Java代碼
string[]parms = { " snicklefritz " };Cursor result=db.query("widgets ",列," name=?",parms,null,null,null);
使用光標
無論怎麽執行查詢,都會返回壹個光標,就是Android的SQLite數據庫光標。
使用光標,您可以:
使用getCount()方法獲取結果集中有多少條記錄;
通過moveToFirst()、moveToNext()和isAfterLast()方法遍歷所有記錄。
通過getColumnNames()獲取字段名;
通過getColumnIndex()轉換為字段編號;
通過getString()和getInt()等方法獲取給定字段的當前記錄的值;
通過requery()方法重新執行查詢以獲取光標;
通過close()方法釋放光標資源;
使用Android中的SQLite數據庫管理工具開發其他數據庫,工具壹般是用來檢查和處理數據庫的內容,而不僅僅是使用數據庫的API。
使用Android模擬器,有兩種方法來管理數據庫。
首先,模擬器與sqlite3控制臺程序綁定,可以使用adb shell命令調用該程序。只要進入模擬器的shell,在數據庫的路徑下執行sqlite3命令就可以了。
數據庫文件壹般存儲在:/data/data/your . app . package/databases/your-db-name中。如果您喜歡使用更友好的工具,您可以將數據庫復制到您的開發機器上,並使用支持SQLite的客戶機來操作它。在這種情況下,您操作的是數據庫的副本。如果您希望您的更改反映在設備上,您需要備份數據庫。
要從設備測試數據庫,可以使用adb pull命令(或者在IDE上執行相應的操作)。
在設備上存儲修改後的數據庫,並使用adb push命令。最方便的SQLite客戶端之壹是FireFox SQLite Manager擴展,它可以跨所有平臺使用。
如果要開發Android應用,必須在Android上存儲數據,使用SQLite數據庫是非常好的選擇。
第五:網絡存儲數據。
上述幾種存儲都將數據存儲在本地設備上。另外,還有壹種存儲(獲取)數據的方式,是通過網絡實現的。
我們可以調用WebService返回的數據或者解析HTTP協議來實現網絡數據交互。