For investors

股價(jià):

5.36 美元 %
認(rèn)識(shí)達(dá)內(nèi)從這里開(kāi)始

認(rèn)真做教育 專(zhuān)心促就業(yè)

android數(shù)據(jù)庫(kù)操作優(yōu)化 android數(shù)據(jù)庫(kù)操作示例

關(guān)于“android數(shù)據(jù)庫(kù)操作優(yōu)化,android數(shù)據(jù)庫(kù)操作示例”的內(nèi)容是不是同學(xué)們期待已久了呢,今天android培訓(xùn)講師整理有關(guān)android上數(shù)據(jù)庫(kù)操作的文章,現(xiàn)在給大家分享下。

1.由于SQLiteDatabase對(duì)象較為耗費(fèi)資源,所以我們?cè)谑褂猛闟QLiteDatabase對(duì)象之后,必須立即關(guān)閉它,避免它繼續(xù)占用資源,否則我們繼續(xù)程序可能會(huì)導(dǎo)致OOM或者其他異常;

2.同理,我們?cè)谑褂猛阠ursor之后也應(yīng)該立即關(guān)閉cursor,避免資源浪費(fèi);

3.我們?cè)陉P(guān)閉數(shù)據(jù)庫(kù)之前,必須將取得的數(shù)據(jù)保存到Map或者List中,否則關(guān)閉數(shù)據(jù)庫(kù)之后,數(shù)據(jù)也會(huì)隨之消失;

4.使用明確的查詢(xún)語(yǔ)句,在數(shù)據(jù)庫(kù)的查詢(xún)中避免使用select * from table這樣的語(yǔ)句,我們一般不會(huì)用到全部的數(shù)據(jù),但這樣查詢(xún)不僅浪費(fèi)時(shí)間,也浪費(fèi)android有限的內(nèi)存,所以我們必須明確查詢(xún)目標(biāo),例如:select id,name from people;

5.在較為頻繁的數(shù)據(jù)庫(kù)操作中(例如批量插入數(shù)據(jù)),可以使用數(shù)據(jù)庫(kù)事物來(lái)處理頻繁操作(如果只有一個(gè)數(shù)據(jù)操作,則android默認(rèn)使用事物);

6.在sqlite數(shù)據(jù)庫(kù)中使用索引,給經(jīng)常查詢(xún)的列創(chuàng)建索引,但索引不適用于較大的數(shù)據(jù)庫(kù),較大的數(shù)據(jù)庫(kù)創(chuàng)建索引會(huì)耗費(fèi)太多的時(shí)間,而且每次改動(dòng)一條數(shù)據(jù),整個(gè)索引都將重新創(chuàng)建;

7.如果需要在pc上制作數(shù)據(jù)庫(kù)db文件,推薦使用Navicat Premium,功能強(qiáng)大,但是費(fèi)用也很強(qiáng)大,不過(guò)可以免費(fèi)試用;

8.制作本地?cái)?shù)據(jù)庫(kù)db文件的時(shí)候,需要使用UTF-8編碼(很多pc端sqlite3工具不支持utf-8編碼或者保持和系統(tǒng)編碼一致),否者在取數(shù)據(jù)的時(shí)候會(huì)出現(xiàn)亂碼,另外,根據(jù)我們使用的pc數(shù)據(jù)庫(kù)文件不同,我們可能會(huì)生成不同的sqlite3數(shù)據(jù)庫(kù)的后綴文件,例如.s3db文件,這個(gè)其實(shí)沒(méi)有影響,android數(shù)據(jù)庫(kù)會(huì)識(shí)別它的,如果你感覺(jué)別扭,可以手動(dòng)改為.db就可以了,這也是沒(méi)關(guān)系的;

9.制作本地?cái)?shù)據(jù)庫(kù)還有一點(diǎn)比較重要的就是默認(rèn)主鍵必須為“_id”并設(shè)置為自動(dòng)增長(zhǎng),不可以是其他的,而且每個(gè)表都必須有,如果你的數(shù)據(jù)庫(kù)沒(méi)有這個(gè)主鍵,在你的app運(yùn)行中會(huì)報(bào)錯(cuò),日志提示缺少“_id”字段,至于為什么應(yīng)用內(nèi)創(chuàng)建數(shù)據(jù)庫(kù)不會(huì)產(chǎn)生這樣的問(wèn)題,那是因?yàn)閍ndroid系統(tǒng)默認(rèn)在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候就是為“_id”為主鍵的,即使你沒(méi)有寫(xiě)這樣的創(chuàng)建語(yǔ)句;

10.還有好多人不知道怎么將mysql或者execl中的數(shù)據(jù)導(dǎo)入到sqlite3數(shù)據(jù)庫(kù)中,這里我提供一個(gè)思路,可以將execl另存為csv文件,大部分?jǐn)?shù)據(jù)庫(kù)也可以直接到處csv格式的文件,然后我們用記事本打開(kāi)csv文件就會(huì)發(fā)現(xiàn)里面就是inert into table values();可以直接放入values的部分,可以用java程序寫(xiě)一個(gè)批量插入語(yǔ)句即可制作sqlite3 db數(shù)據(jù)庫(kù)文件;

11.制作好的sqlite3 db數(shù)據(jù)庫(kù)文件應(yīng)該放在項(xiàng)目的assets文件夾或者res/raw文件夾中,然后在app啟動(dòng)的過(guò)程中將數(shù)據(jù)庫(kù)用java io流復(fù)制到data/data/packagename/database目錄中(注意,如果你的db數(shù)據(jù)庫(kù)文件較大,請(qǐng)放在內(nèi)存卡或者其他外存中);

12.如果你不想自己在sd卡上面的數(shù)據(jù)庫(kù)被普通文件瀏覽器(android)直接掃描到,可以在sd中新建一個(gè)文件夾,并以”.“開(kāi)頭,這樣的文件夾會(huì)被大部分的文件瀏覽器過(guò)濾掉不顯示;

13.為了防止你的db數(shù)據(jù)庫(kù)文件被其他有心人獲取,你也可以將自己的數(shù)據(jù)庫(kù)的后綴偽裝成其他文件,例如.mp3,.dat之類(lèi)的,但是需要注意的是,db文件會(huì)在應(yīng)用打包生成apk的時(shí)候被壓縮(可以有效減少apk的體積),如果是mp3之類(lèi)的文件的話(huà),則不會(huì)被壓縮,經(jīng)筆者測(cè)試,改為.dat格式也是可以被壓縮的,或者將db文件復(fù)制到sd卡的時(shí)候再改名為其他后綴;

14.如果數(shù)據(jù)庫(kù)中的信息比較敏感,大家也可以在加密數(shù)據(jù)之后再存入數(shù)據(jù)庫(kù),取數(shù)據(jù)的時(shí)候在應(yīng)用內(nèi)解密,當(dāng)然網(wǎng)上還有一些其他的加密手段,但是這些加密無(wú)一例外的都會(huì)犧牲掉更多相應(yīng)時(shí)間和內(nèi)存資源,所以大家在規(guī)劃app的時(shí)候必須自己考慮清楚。

android數(shù)據(jù)庫(kù)操作優(yōu)化內(nèi)容先介紹到這里,如果還有其他相關(guān)android數(shù)據(jù)庫(kù)的知識(shí)問(wèn)題可隨時(shí)瀏覽本網(wǎng)站,或者咨詢(xún)android培訓(xùn)的問(wèn)題,我們隨時(shí)為您解答。

【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!

相關(guān)推薦
最新資訊
免費(fèi)試聽(tīng)課程
  • 全部課程
  • IT課程
  • 設(shè)計(jì)課程
  • 運(yùn)營(yíng)課程
Free courses
最新開(kāi)班時(shí)間
  • 北京
  • 上海
  • 廣州
  • 深圳
  • 南京
  • 成都
  • 武漢
  • 西安
  • 青島
  • 天津
  • 杭州
  • 重慶
  • 哈爾濱
  • 濟(jì)南
  • 沈陽(yáng)
  • 合肥
  • 鄭州
  • 長(zhǎng)春
  • 蘇州
  • 長(zhǎng)沙
  • 昆明
  • 太原
  • 無(wú)錫
  • 石家莊
  • 南寧
  • 佛山
  • 珠海
  • 寧波
  • 保定
  • 呼和浩特
  • 洛陽(yáng)
  • 煙臺(tái)
  • 運(yùn)城
  • 濰坊
  • 開(kāi)課名稱(chēng)
  • 開(kāi)班時(shí)間
  • 搶座
  • 咨詢(xún)
  • 開(kāi)課名稱(chēng)
  • 開(kāi)班時(shí)間
  • 搶座
  • 咨詢(xún)
預(yù)約申請(qǐng)?jiān)嚶?tīng)課
收起