Android數(shù)據(jù)存儲(chǔ)

Android數(shù)據(jù)存儲(chǔ)

Android提供了5種方式存儲(chǔ)數(shù)據(jù)

  • SharedPreferences
    • 它是Android提供的用來(lái)存儲(chǔ)一些簡(jiǎn)單配置信息的一種機(jī)制底瓣,采用了XML格式將數(shù)據(jù)存儲(chǔ)到設(shè)備中感凤。只能在同一個(gè)包內(nèi)使用凹联,不能在不同的包之間使用
  • File
    • 文件存儲(chǔ)方式是一種較常用的方法揭鳞,在Android中讀取/寫入文件的方法谢谦,與Java中實(shí)現(xiàn)I/O的程序是完全一樣的蚕脏,提供了openFileInput()和openFileOutput()方法來(lái)讀取設(shè)備上的文件
  • SQLite
    • SQLite是Android所帶的一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)具钥,它支持SQL語(yǔ)句,它是一個(gè)輕量級(jí)的
  • ContentProvider
  • 網(wǎng)絡(luò)

使用SharedPreferences存儲(chǔ)數(shù)據(jù)

適用范圍:保存少量的數(shù)據(jù)驯用,且這些數(shù)據(jù)的格式非常簡(jiǎn)單:字符串型脸秽、基本類型的值。比如應(yīng)用程序的各種配置信息(如是否打開(kāi)音效蝴乔、是否使用震動(dòng)效果记餐、小游戲的玩家積分等),解鎖口 令密碼等
核心原理:保存基于XML文件存儲(chǔ)的key-value鍵值對(duì)數(shù)據(jù)薇正,通常用來(lái)存儲(chǔ)一些簡(jiǎn)單的配置信息片酝。通過(guò)DDMS的File Explorer面板,展開(kāi)文件瀏覽樹(shù),很明顯SharedPreferences數(shù)據(jù)總是存儲(chǔ)在/data/data/<package name>/shared_prefs目錄下挖腰。SharedPreferences對(duì)象本身只能獲取數(shù)據(jù)而不支持存儲(chǔ)和修改,存儲(chǔ)修改是通過(guò)SharedPreferences.edit()獲取的內(nèi)部接口Editor對(duì)象實(shí)現(xiàn)雕沿。 SharedPreferences本身是一 個(gè)接口,程序無(wú)法直接創(chuàng)建SharedPreferences實(shí)例猴仑,只能通過(guò)Context提供的getSharedPreferences(String name, int mode)方法來(lái)獲取SharedPreferences實(shí)例审轮,該方法中name表示要操作的xml文件名,第二個(gè)參數(shù)具體如下:

  • Context.MODE_PRIVATE: 指定該SharedPreferences數(shù)據(jù)只能被本應(yīng)用程序讀辽俗、寫疾渣。
  • Context.MODE_WORLD_READABLE: 指定該SharedPreferences數(shù)據(jù)能被其他應(yīng)用程序讀,但不能寫榆苞。
  • Context.MODE_WORLD_WRITEABLE: 指定該SharedPreferences數(shù)據(jù)能被其他應(yīng)用程序讀稳衬,寫

Editor有如下主要重要方法:

  • SharedPreferences.Editor clear():清空SharedPreferences里所有數(shù)據(jù)
  • SharedPreferences.Editor putXxx(String key , xxx value): 向SharedPreferences存入指定key對(duì)應(yīng)的數(shù)據(jù),其中xxx 可以是boolean,float,int等各種基本類型據(jù)
  • SharedPreferences.Editor remove(): 刪除SharedPreferences中指定key對(duì)應(yīng)的數(shù)據(jù)項(xiàng)
  • boolean commit(): 當(dāng)Editor編輯完成后坐漏,使用該方法提交修改

SharedPreferences對(duì)象與SQLite數(shù)據(jù)庫(kù)相比薄疚,免去了創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建表赊琳,寫SQL語(yǔ)句等諸多操作街夭,相對(duì)而言更加方便,簡(jiǎn)潔躏筏。但是SharedPreferences也有其自身缺陷板丽,比如其職能存儲(chǔ)boolean,int趁尼,float埃碱,long和String五種簡(jiǎn)單的數(shù)據(jù)類型,比如其無(wú)法進(jìn)行條件查詢等酥泞。所以不論SharedPreferences的數(shù)據(jù)存儲(chǔ)操作是如何簡(jiǎn)單砚殿,它也只能是存儲(chǔ)方式的一種補(bǔ)充,而無(wú)法完全替代如SQLite數(shù)據(jù)庫(kù)這樣的其他數(shù)據(jù)存儲(chǔ)方式芝囤。

File文件存儲(chǔ)數(shù)據(jù)

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

  • MODE_PRIVATE:為默認(rèn)操作模式,代表該文件是私有數(shù)據(jù)羡藐,只能被應(yīng)用本身訪問(wèn)贩毕,在該模式下,寫入的內(nèi)容會(huì)覆蓋原文件的內(nèi)容仆嗦,如果想把新寫入的內(nèi)容追加到原文件中辉阶。可 以使用Context.MODE_APPEND

  • MODE_APPEND:模式會(huì)檢查文件是否存在欧啤,存在就往文件追加內(nèi)容睛藻,否則就創(chuàng)建新文件启上。

  • MODE_WORLD_READABLE:表示當(dāng)前文件可以被其他應(yīng)用讀刃纤怼;

  • MODE_WORLD_WRITEABLE:表示當(dāng)前文件可以被其他應(yīng)用寫入冈在。

除此之外倒慧,Context還提供了如下幾個(gè)重要的方法:

  • getDir(String name , int mode):在應(yīng)用程序的數(shù)據(jù)文件夾下獲取或者創(chuàng)建name對(duì)應(yīng)的子目錄
  • File getFilesDir():獲取該應(yīng)用程序的數(shù)據(jù)文件夾得絕對(duì)路徑
  • String[] fileList():返回該應(yīng)用數(shù)據(jù)文件夾的全部文件

SQLite存儲(chǔ)數(shù)據(jù)

SQLite是輕量級(jí)嵌入式數(shù)據(jù)庫(kù)引擎,它支持 SQL 語(yǔ)言包券,并且只利用很少的內(nèi)存就有很好的性能∪伊拢現(xiàn)在的主流移動(dòng)設(shè)備像Android、iPhone等都使用SQLite作為復(fù)雜數(shù)據(jù)的存儲(chǔ)引擎溅固,在我們?yōu)橐苿?dòng)設(shè)備開(kāi)發(fā)應(yīng)用程序時(shí)付秕,也許就要使用到SQLite來(lái)存儲(chǔ)我們大量的數(shù)據(jù),所以我們就需要掌握移動(dòng)設(shè)備上的SQLite開(kāi)發(fā)技巧

SQLiteDatabase類為我們提供了很多種方法侍郭,上面的代碼中基本上囊括了大部分的數(shù)據(jù)庫(kù)操作询吴;對(duì)于添加、更新和刪除來(lái)說(shuō)亮元,我們都可以使用

db.executeSQL(String sql);  
db.executeSQL(String sql, Object[] bindArgs);//sql語(yǔ)句中使用占位符猛计,然后第二個(gè)參數(shù)是實(shí)際的參數(shù)集 

db.insert(String table, String nullColumnHack, ContentValues values);  
db.update(String table, Contentvalues values, String whereClause, String whereArgs);  
db.delete(String table, String whereClause, String whereArgs);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市爆捞,隨后出現(xiàn)的幾起案子奉瘤,更是在濱河造成了極大的恐慌,老刑警劉巖煮甥,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盗温,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡成肘,警方通過(guò)查閱死者的電腦和手機(jī)卖局,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)艇劫,“玉大人吼驶,你說(shuō)我怎么就攤上這事惩激。” “怎么了蟹演?”我有些...
    開(kāi)封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵风钻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我酒请,道長(zhǎng)骡技,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任羞反,我火速辦了婚禮布朦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昼窗。我一直安慰自己是趴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布澄惊。 她就那樣靜靜地躺著唆途,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掸驱。 梳的紋絲不亂的頭發(fā)上肛搬,一...
    開(kāi)封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音毕贼,去河邊找鬼温赔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鬼癣,可吹牛的內(nèi)容都是我干的陶贼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扣溺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼骇窍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起锥余,我...
    開(kāi)封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤腹纳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后驱犹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嘲恍,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年雄驹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了佃牛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡医舆,死狀恐怖俘侠,靈堂內(nèi)的尸體忽然破棺而出象缀,到底是詐尸還是另有隱情,我是刑警寧澤爷速,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布央星,位于F島的核電站,受9級(jí)特大地震影響惫东,放射性物質(zhì)發(fā)生泄漏莉给。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一廉沮、第九天 我趴在偏房一處隱蔽的房頂上張望颓遏。 院中可真熱鬧,春花似錦滞时、人聲如沸叁幢。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)遥皂。三九已至,卻和暖如春刽漂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弟孟。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工贝咙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拂募。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓庭猩,卻偏偏與公主長(zhǎng)得像陈症,于是被迫代替她去往敵國(guó)和親蔼水。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容