For investors
股價(jià):
5.36 美元 %For investors
股價(jià):
5.36 美元 %認(rèn)真做教育 專心促就業(yè)
關(guān)于“android數(shù)據(jù)庫操作優(yōu)化,android數(shù)據(jù)庫操作示例”的內(nèi)容是不是同學(xué)們期待已久了呢,今天android培訓(xùn)講師整理有關(guān)android上數(shù)據(jù)庫操作的文章,現(xiàn)在給大家分享下。
1.由于SQLiteDatabase對象較為耗費(fèi)資源,所以我們在使用完SQLiteDatabase對象之后,必須立即關(guān)閉它,避免它繼續(xù)占用資源,否則我們繼續(xù)程序可能會(huì)導(dǎo)致OOM或者其他異常;
2.同理,我們在使用完cursor之后也應(yīng)該立即關(guān)閉cursor,避免資源浪費(fèi);
3.我們在關(guān)閉數(shù)據(jù)庫之前,必須將取得的數(shù)據(jù)保存到Map或者List中,否則關(guān)閉數(shù)據(jù)庫之后,數(shù)據(jù)也會(huì)隨之消失;
4.使用明確的查詢語句,在數(shù)據(jù)庫的查詢中避免使用select * from table這樣的語句,我們一般不會(huì)用到全部的數(shù)據(jù),但這樣查詢不僅浪費(fèi)時(shí)間,也浪費(fèi)android有限的內(nèi)存,所以我們必須明確查詢目標(biāo),例如:select id,name from people;
5.在較為頻繁的數(shù)據(jù)庫操作中(例如批量插入數(shù)據(jù)),可以使用數(shù)據(jù)庫事物來處理頻繁操作(如果只有一個(gè)數(shù)據(jù)操作,則android默認(rèn)使用事物);
6.在sqlite數(shù)據(jù)庫中使用索引,給經(jīng)常查詢的列創(chuàng)建索引,但索引不適用于較大的數(shù)據(jù)庫,較大的數(shù)據(jù)庫創(chuàng)建索引會(huì)耗費(fèi)太多的時(shí)間,而且每次改動(dòng)一條數(shù)據(jù),整個(gè)索引都將重新創(chuàng)建;
7.如果需要在pc上制作數(shù)據(jù)庫db文件,推薦使用Navicat Premium,功能強(qiáng)大,但是費(fèi)用也很強(qiáng)大,不過可以免費(fèi)試用;
8.制作本地?cái)?shù)據(jù)庫db文件的時(shí)候,需要使用UTF-8編碼(很多pc端sqlite3工具不支持utf-8編碼或者保持和系統(tǒng)編碼一致),否者在取數(shù)據(jù)的時(shí)候會(huì)出現(xiàn)亂碼,另外,根據(jù)我們使用的pc數(shù)據(jù)庫文件不同,我們可能會(huì)生成不同的sqlite3數(shù)據(jù)庫的后綴文件,例如.s3db文件,這個(gè)其實(shí)沒有影響,android數(shù)據(jù)庫會(huì)識別它的,如果你感覺別扭,可以手動(dòng)改為.db就可以了,這也是沒關(guān)系的;
9.制作本地?cái)?shù)據(jù)庫還有一點(diǎn)比較重要的就是默認(rèn)主鍵必須為“_id”并設(shè)置為自動(dòng)增長,不可以是其他的,而且每個(gè)表都必須有,如果你的數(shù)據(jù)庫沒有這個(gè)主鍵,在你的app運(yùn)行中會(huì)報(bào)錯(cuò),日志提示缺少“_id”字段,至于為什么應(yīng)用內(nèi)創(chuàng)建數(shù)據(jù)庫不會(huì)產(chǎn)生這樣的問題,那是因?yàn)閍ndroid系統(tǒng)默認(rèn)在創(chuàng)建數(shù)據(jù)庫的時(shí)候就是為“_id”為主鍵的,即使你沒有寫這樣的創(chuàng)建語句;
10.還有好多人不知道怎么將mysql或者execl中的數(shù)據(jù)導(dǎo)入到sqlite3數(shù)據(jù)庫中,這里我提供一個(gè)思路,可以將execl另存為csv文件,大部分?jǐn)?shù)據(jù)庫也可以直接到處csv格式的文件,然后我們用記事本打開csv文件就會(huì)發(fā)現(xiàn)里面就是inert into table values();可以直接放入values的部分,可以用java程序寫一個(gè)批量插入語句即可制作sqlite3 db數(shù)據(jù)庫文件;
11.制作好的sqlite3 db數(shù)據(jù)庫文件應(yīng)該放在項(xiàng)目的assets文件夾或者res/raw文件夾中,然后在app啟動(dòng)的過程中將數(shù)據(jù)庫用java io流復(fù)制到data/data/packagename/database目錄中(注意,如果你的db數(shù)據(jù)庫文件較大,請放在內(nèi)存卡或者其他外存中);
12.如果你不想自己在sd卡上面的數(shù)據(jù)庫被普通文件瀏覽器(android)直接掃描到,可以在sd中新建一個(gè)文件夾,并以”.“開頭,這樣的文件夾會(huì)被大部分的文件瀏覽器過濾掉不顯示;
13.為了防止你的db數(shù)據(jù)庫文件被其他有心人獲取,你也可以將自己的數(shù)據(jù)庫的后綴偽裝成其他文件,例如.mp3,.dat之類的,但是需要注意的是,db文件會(huì)在應(yīng)用打包生成apk的時(shí)候被壓縮(可以有效減少apk的體積),如果是mp3之類的文件的話,則不會(huì)被壓縮,經(jīng)筆者測試,改為.dat格式也是可以被壓縮的,或者將db文件復(fù)制到sd卡的時(shí)候再改名為其他后綴;
14.如果數(shù)據(jù)庫中的信息比較敏感,大家也可以在加密數(shù)據(jù)之后再存入數(shù)據(jù)庫,取數(shù)據(jù)的時(shí)候在應(yīng)用內(nèi)解密,當(dāng)然網(wǎng)上還有一些其他的加密手段,但是這些加密無一例外的都會(huì)犧牲掉更多相應(yīng)時(shí)間和內(nèi)存資源,所以大家在規(guī)劃app的時(shí)候必須自己考慮清楚。
android數(shù)據(jù)庫操作優(yōu)化內(nèi)容先介紹到這里,如果還有其他相關(guān)android數(shù)據(jù)庫的知識問題可隨時(shí)瀏覽本網(wǎng)站,或者咨詢android培訓(xùn)的問題,我們隨時(shí)為您解答。
【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問題,請?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!