Android資料庫存儲
前言:
今天無聊就試試水,寫寫部落格,在之前andorid使用資料儲存好像大概有5種方式,其中輕量級的是sqlite資料庫,但是sqlite使用起來好像有麻煩,首先要判斷…之後建立資料庫…建立表…之後就插入資料 那代碼都是一塊塊的,使用起來好麻煩,所有就對資料庫操作進行少少優化
代碼介紹
android studio : compile ‘ruan.database.com:mydatabase:1.1’
優點:
調用友善
減少使用者邏輯處理
代碼量少
架構設計:
原生使用資料庫需要以下步驟
比如:
建立SQLiteOpenHelper 之後在類建立資料庫,建立表等等,這樣子的靈活性比較麻煩
建立SQLiteDatabase 之後操作資料庫
ContentValues是唯一插入資料庫的資料類型 如果你使用對象就必須将Object轉成ContentValues
資料庫的資料提取傳回cursor,之後手動的将cursor将資料取出來把資料封裝成Object之後再使用
.
.
.
所有原生使用本地資料庫是非常麻煩的事情,是以使用sqlite的時候是非常吃力的
是以才有現在這個架構的出現
SQLiteOpenHelper 和SQLiteDatabase 不需要開發者去建立和操作,之後插入資料庫的時候不在是ContentValues這個資料類型了,可以直接将Object将資料插入資料庫,不需要開發者手動将資料進行類型轉換,其實底層實作的方式還是Object将轉成ContentValues但是不需要開發者去手動轉換而以,實作的方式就是好好利用java的原生反射機制,将Object裡面的資料進行自動轉換成ContentValues,這個樣子不但可以節約開發時間,可以變得更自動化。
從資料庫裡面擷取資料也是不需要手動轉,直接将cursor資料自動封裝成Object,原理其實也是利用java強大的反射機制,完成這個操作。開發者就可以直接一句指令代碼就可以實作從資料庫裡面增删查改
這個架構也還是實作就是自動判斷建立資料庫和資料表的操作,首先每次啟動app的時候都要檢查資料庫的檢查是否存在,自動判斷,如果沒有該表則自動建立表,這個邏輯方式就不需要開發者去通過代碼實作,讓這個架構幫你實作
說了這麼多應該就可以上代碼解釋了╮(╯▽╰)╭
java
public class Test implements DatabaseCallback{ public Test(Context context){ CheckDatabase.Companion.CheckData(context , "資料庫名稱" , "資料庫表" , this); } @NotNull @Override public Object CreateTable(@NotNull String database, @NotNull String table, boolean state) { //通過state判斷這個表是不是存在 true存在false不存在 if (state) return null; else{ //這個是建立表的時候 傳入表的結構 Establish establish = new Establish(); establish.put("id" , "int"); establish.put("name" , "varchar(50)"); return establish; } } }
上面的代碼片段是自動檢測資料庫和資料庫表是否存在,之後通過表的結構自動建立表不用手動的判斷表
這個架構是用Kotlin寫的,因為google官方将Kotlin列入android官方語言,是以提前運用一下O(∩_∩)O哈哈~下面的代碼使用Kotlin語言實作功能和上面的一樣
Kotlin
class Test (var context: Context) : DatabaseCallback{
override fun CreateTable(database: String, table: String, state: Boolean): Any { if (state) return null!! else{ val establish : Establish = Establish() establish.put("id" , "int") establish.put("name" , "varchar(50)") return establish } } init { CheckDatabase.CheckData(context , "資料庫名稱" , "資料庫表" , this) } }
建立完資料庫的表,這個時候剩下的就是資料庫的增删查改
Java
new BaseUser(context).INSERT("資料庫名稱" , "資料庫表" , object)
new BaseUser(context).DELETE("資料庫名稱" , "資料庫表") new BaseUser(context).QUERY("資料庫名稱" , "資料庫表" , class) new BaseUser(context).UPDATE("資料庫名稱" , "資料庫表" , object)
上面4句話就是資料庫的增删查改就這麼簡單不需要其他的操作
CheckData
Kotlin
BaseUser(context).INSERT("資料庫名稱" , "資料庫表" , object)
BaseUser(context).DELETE("資料庫名稱" , "資料庫表") BaseUser(context).QUERY("資料庫名稱" , "資料庫表" , class) BaseUser(context).UPDATE("資料庫名稱" , "資料庫表" , object)
這個是我個人封裝的一個資料庫的小架構裡面
CheckDatabase這個類是實作檢測資料庫和表是否存在的類
BaseUser是資料庫操作的類
總結
本文主要介紹這個架構的使用,實作增删查改和資料庫的一些操作,以便開發更好使用操作資料庫