Android的數據儲存方式

Android平臺進行數據存儲的五大方式,分別如下:

1使用SharedPreferences存儲數據

2文件存儲數據

3?SQLite數據庫存儲數據

4使用ContentProvider存儲數據

5網絡存儲數據

第一種:使用SharedPreferences存儲數據

適用范圍保存少量的數據,且這些數據的格式非常簡單:字符串型、基本類型的值。比如應用程序的各種配置信息(如是否打開音效、是否使用震動效果、小游戲的玩家積分等),解鎖口令密碼等

核心原理保存基于XML文件存儲的key-value鍵值對數據,通常用來存儲一些簡單的配置信息。通過DDMS的File Explorer面板,展開文件瀏覽樹,很明顯SharedPreferences數據總是存儲在/data/data//shared_prefs目錄下。SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過SharedPreferences.edit()獲取的內部接口Editor對象實現。SharedPreferences本身是一 個接口,程序無法直接創建SharedPreferences實例,只能通過Context提供的getSharedPreferences(String name, int mode)方法來獲取SharedPreferences實例,該方法中name表示要操作的xml文件名,第二個參數具體如下:

Context.MODE_PRIVATE:指定該SharedPreferences數據只能被本應用程序讀、寫。

Context.MODE_WORLD_READABLE:指定該SharedPreferences數據能被其他應用程序讀,但不能寫。

Context.MODE_WORLD_WRITEABLE:指定該SharedPreferences數據能被其他應用程序讀,寫

Editor有如下主要重要方法:

SharedPreferences.Editor clear():清空SharedPreferences里所有數據

SharedPreferences.Editor putXxx(String key , xxx value):向SharedPreferences存入指定key對應的數據,其中xxx可以是boolean,float,int等各種基本類型據

SharedPreferences.Editor remove():刪除SharedPreferences中指定key對應的數據項

boolean commit():當Editor編輯完成后,使用該方法提交修改

讀寫其他應用的SharedPreferences:

1、在創建SharedPreferences時,指定MODE_WORLD_READABLE模式,表明該SharedPreferences數據可以被其他程序讀取

2、創建其他應用程序對應的Context:

Context pvCount = createPackageContext("com.tony.app", Context.CONTEXT_IGNORE_SECURITY);這里的com.tony.app就是其他程序的包名

3、使用其他程序的Context獲取對應的SharedPreferences

SharedPreferences read = pvCount.getSharedPreferences("lock", Context.MODE_WORLD_READABLE);

4、如果是寫入數據,使用Editor接口即可,所有其他操作均和前面一致。

SharedPreferences對象與SQLite數據庫相比,免去了創建數據庫,創建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數據類型,比如其無法進行條件查詢等。所以不論SharedPreferences的數據存儲操作是如何簡單,它也只能是存儲方式的一種補充,而無法完全替代如SQLite數據庫這樣的其他數據存儲方式。

第二種:文件存儲數據

核心原理: Context提供了兩個方法來打開數據文件里的文件IO流FileInputStream openFileInput(String name); FileOutputStream(String name , int mode),這兩個方法第一個參數 用于指定文件名,第二個參數指定打開文件的模式。具體有以下值可選:

MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND

MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。

MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;

MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。

除此之外,Context還提供了如下幾個重要的方法:

getDir(String name , int mode):在應用程序的數據文件夾下獲取或者創建name對應的子目錄

File getFilesDir():獲取該應用程序的數據文件夾得絕對路徑

String[] fileList():返回該應用數據文件夾的全部文件

openFileOutput()方法的第一參數用于指定文件名稱,不能包含路徑分隔符“/”,如果文件不存在,Android會自動創建它。創建的文件保存在/data/data//files目錄,如:/data/data/cn.tony.app/files/message.txt,

下面講解某些特殊文件讀寫需要注意的地方:

讀寫sdcard上的文件

其中讀寫步驟按如下進行:

1、調用Environment的getExternalStorageState()方法判斷手機上是否插了sd卡,且應用程序具有讀寫SD卡的權限,如下代碼將返回true

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

2、調用Environment.getExternalStorageDirectory()方法來獲取外部存儲器,也就是SD卡的目錄,或者使用"/mnt/sdcard/"目錄

3、使用IO流操作SD卡上的文件

注意點:手機應該已插入SD卡,對于模擬器而言,可通過mksdcard命令來創建虛擬存儲卡

必須在AndroidManifest.xml上配置讀寫SD卡的權限

第三種:SQLite存儲數據

SQLite是輕量級嵌入式數據庫引擎,它支持SQL語言,并且只利用很少的內存就有很好的性能。現在的主流移動設備像Android、iPhone等都使用SQLite作為復雜數據的存儲引擎,在我們為移動設備開發應用程序時,也許就要使用到SQLite來存儲我們大量的數據,所以我們就需要掌握移動設備上的SQLite開發技巧

SQLiteDatabase類為我們提供了很多種方法,上面的代碼中基本上囊括了大部分的數據庫操作;對于添加、更新和刪除來說,我們都可以使用

1db.executeSQL(String sql);2db.executeSQL(String sql, Object[] bindArgs);//sql語句中使用占位符,然后第二個參數是實際的參數集

各參數說明:

·table:表名稱

·colums:表示要查詢的列所有名稱集

·selection:表示WHERE之后的條件語句,可以使用占位符

·selectionArgs:條件語句的參數數組

·groupBy:指定分組的列名

·having:指定分組條件,配合groupBy使用

·orderBy:y指定排序的列名

·limit:指定分頁參數

·distinct:指定“true”或“false”表示要不要過濾重復值

·Cursor:返回值,相當于結果集ResultSet

SQLiteOpenHelper類介紹

SQLiteOpenHelper是SQLiteDatabase的一個幫助類,用來管理數據庫的創建和版本的更新。一般是建立一個類繼承它,并實現它的onCreate和onUpgrade方法。

Android sqlite3數據庫管理工具

Android SDK的tools目錄下提供了一個sqlite3.exe工具,這是一個簡單的sqlite數據庫管理工具。開發者可以方便的使用其對sqlite數據庫進行命令行的操作。

程序運行生成的*.db文件一般位于"/data/data/項目名(包括所處包名)/databases/*.db",因此要對數據庫文件進行操作需要先找到數據庫文件:

1、進入shell 命令

adb shell

2、找到數據庫文件

#cd data/data

#ls ???????????????--列出所有項目

#cd project_name ??--進入所需項目名

#cd databases

#ls ???????????????--列出現寸的數據庫文件

3、進入數據庫

#sqlite3 test_db ??--進入所需數據庫

會出現類似如下字樣:

SQLite version 3.6.22

Enter ".help" for instructions

Enter SQL statements terminated with a ";"

sqlite>

至此,可對數據庫進行sql操作。

4、sqlite常用命令

>.databases ???????--產看當前數據庫

>.tables ??????????--查看當前數據庫中的表

>.help ????????????--sqlite3幫助

>.schema ???????????--各個表的生成語句

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容