SQLite是止前最流行的數(shù)據(jù)庫軟件,它支持SQL語言,可以非常好的提升軟件的性能,開源性也極好,東坡這里附上安卓Android sqlite萬能數(shù)據(jù)庫,有需要的歡迎下載!
安卓Android sqlite萬能數(shù)據(jù)庫特色介紹
安卓里常用的存儲有方法中少不了數(shù)據(jù)庫的使用,主要是對單表的操作,多表的操作此處不涉及。每次使用數(shù)據(jù)庫都會有繁瑣的代碼要寫,大致思路是繼承自SQLiteOpenHelper寫一個數(shù)據(jù)庫操作子類,然后重寫onCreate方法,寫上數(shù)據(jù)庫的建表語句,重寫onUpgrade方法,寫上數(shù)據(jù)庫的升級執(zhí)行代碼,此外還有繁瑣的增、刪、改、查語句。每次建一張表都要做這些重復(fù)的工作,能不能用一種通用的方法,把這些繁瑣的事務(wù)交給程序自動去完成呢?代碼里告訴你答案。
android操作sqlite數(shù)據(jù)庫操作心得
寫一下android操作數(shù)據(jù)庫中的一些準(zhǔn)備。
首先,配一下adb的環(huán)境變量,因為每次都要到adb的目錄下去啟動實在太麻煩了,下面是具體步驟,當(dāng)然也可以該其他文件,我習(xí)慣改這個,可以改完后可以source一下使它生效。
1、sudogedit/etc/profile
2、將下面的兩句加到上面打開的文件里
exportANDROID_HOME=/home/sdk文件路徑
exportPATH=$PATH:$ANDROID_HOME/platform-tools
3、重啟電腦,大功告成。
adb配好以后,我們最好還要給手機(jī)里的數(shù)據(jù)庫訪問的權(quán)限,一般在/data/data/包名/database里面,用adbshell進(jìn)入后su獲得手機(jī)root權(quán)限,然后給權(quán)限chmod。
要讀數(shù)據(jù)庫文件的話就用命令sqlite3數(shù)據(jù)庫文件,其中的數(shù)據(jù)庫可以直接在adbshell中運行sqlite3,但我按照網(wǎng)上弄的就是不能在adbshell中打開sqlite3數(shù)據(jù)庫,說命令沒有找到,我該傳的文件都傳了,沒辦法,只有在eclipse里的ddms的fileexplore里把數(shù)據(jù)庫文件到處然后在Linux終端里運行sqlite3數(shù)據(jù)庫來看了。
還有要注意的是寫sql語句時一定要注意"select*from"+TABLE_NAME中的from和引號要留有空格,不然的話就連在一起了。
下面的有一個知識要講一下,sqlite的增加,刪除等操作都挺簡單的,麻煩的就是查詢操作,一般都借用Cursor來保存查詢數(shù)據(jù),一開始我沒怎么注意這是一個指針類型,指向數(shù)據(jù)庫里的數(shù)據(jù),而我一開始寫的時候把數(shù)據(jù)庫的關(guān)閉操作寫在了Cursor操作的前面,也就是說先把數(shù)據(jù)庫關(guān)閉了再對Cursor對象進(jìn)行操作,這樣的話就造成了Cursor的空指針,也就注定杯具了好久。。。
常見問題
1、為什么要把已存在數(shù)據(jù)庫文件放在res/raw文件夾下, 放在其它地方可以嗎?
如果放在res/raw文件夾下,數(shù)據(jù)庫文件在apk打包的時候就必須確定并且不可更改,否則每次都要重新編譯生成apk,在使用的時候會很麻煩,所以最好是將數(shù)據(jù)庫文件放置在sd卡的某個位置。
經(jīng)過驗證得知,數(shù)據(jù)庫文件可以放置到其它位置,例如sd卡的某個位置,至于放在什么位置根據(jù)具體情景來覺得,上面的代碼只是一個例子而已,當(dāng)然放在不同的位置,訪問文件的時候的方式也不一樣。當(dāng)然注意要訪問sd卡的時候一定要在AndroidManifest.xml文件中添加訪問sd卡的權(quán)限。
2、上面的代碼沒有判斷已存在的數(shù)據(jù)庫文件是否存在?一是為了代碼的嚴(yán)謹(jǐn)性考慮,二是因為在特殊的機(jī)子上可能不需要之前已經(jīng)存在的數(shù)據(jù)庫,希望自己配置并生成數(shù)據(jù)庫,此時就不需要復(fù)制之前的數(shù)據(jù)庫。
這個問題根據(jù)實際情景來決定是否需要判斷已存在的數(shù)據(jù)庫文件是否存在,判斷的時候根據(jù)數(shù)據(jù)庫文件放置的位置不同而不同,另外如果防止在res/raw文件夾下沒有辦法判斷數(shù)據(jù)庫文件是否存在,因為訪問res/raw文件夾下的文件使用的方法是R.raw.xxx,如果文件不存在,沒辦法得到數(shù)據(jù)庫文件的對象,所以也就沒辦法判斷,補(bǔ)充一個知識res/raw文件夾下的文件的絕對路徑是”android.resource://”+ getPackageName() + R.raw.xxx。
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版