• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Android開源數(shù)據(jù)庫框架LitePal的研究與應用

      2016-07-04 03:53申圣兵
      中國新通信 2016年10期
      關鍵詞:數(shù)據(jù)庫

      申圣兵

      【摘要】 本文首先對Android傳統(tǒng)數(shù)據(jù)庫操作方式進行了描述,然后重點描述了Android開源數(shù)據(jù)庫框架LitePal的使用,通過對比,突出表現(xiàn)LitePal工作的簡潔、高效。

      【關鍵詞】 Android 數(shù)據(jù)庫 LitePal ORM

      LitePal是一款開源的Android數(shù)據(jù)庫框架,它采用了對象關系映射(ORM)的模式,并將我們平時開發(fā)時最常用到的一些數(shù)據(jù)庫功能進行了封裝,使得不用編寫一行SQL語句就可以完成各種建表、増刪改查的操作。并且LitePal很“輕”,jar包只有100k不到,而且近乎零配置,使用LitePal框架,可以將我們從繁瑣的數(shù)據(jù)庫操作中解放出來。

      一、傳統(tǒng)的數(shù)據(jù)庫操作方式

      在Android的應用開發(fā)中,傳統(tǒng)的數(shù)據(jù)庫操作方式是使用 Android操作系統(tǒng)中集成的一個嵌入式關系型數(shù)據(jù)庫SQLite來進行的,它要求開發(fā)人員熟練的掌握SQL語法,操作數(shù)據(jù)庫基本是通過SQL語句來實現(xiàn)的。為了方便我們對數(shù)據(jù)庫表進行管理,Android本身還提供了一個幫助類:SQLiteOpenHelper。這個類集創(chuàng)建和升級數(shù)據(jù)庫于一身,并且自動管理了數(shù)據(jù)庫版本,算是一個非常好用的工具了。

      下面我們來看看SQLiteOpenHelper的用法吧。首先你要知道SQLiteOpenHelper是一個抽象類,這意味著如果我們想要使用它的話,就需要創(chuàng)建一個自己的幫助類去繼承它。SQLiteOpenHelper中有兩個抽象方法,分別是onCreate()和onUpgrade(),我們必須在自己的幫助類里面重寫這兩個方法,然后分別在這兩個方法中去實現(xiàn)創(chuàng)建、升級數(shù)據(jù)庫的邏輯。

      新建一個SQLLiteHelperUtil,這樣一個最基本的數(shù)據(jù)庫幫助類的代碼如下:

      Public class SQLLiteHelperUtil extends SQLLiteOpenHelper{

      Public SQLLiteHelperUtil(Context context,String name,CursorFactory factory,int version){

      Super(context,name,factory,version);

      }

      @Override

      public void onCreate(SQLiteDatabase db) {

      }

      @Override

      public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {

      }}

      其中,當數(shù)據(jù)庫創(chuàng)建的時候會調(diào)用onCreate()方法,在這里去執(zhí)行建表操作就可以了。比如說我們想新建一張課程表course表,其中有courseName,classRoom,teacher,dayOfWeek這幾列,分別代表課程名,教室,任課教師,周幾,那么代碼就可以這樣寫:

      Public static final String CREATE_COURSE=”create table course(“

      + ?id integer primary key autoincrement, ?

      +?courseName text,?

      +?classRoom text,?

      +?teacher text,?

      +?dayOfWeek integer?);”

      我們把建表語句定義成了一個常量,然后在上述SQLLiteHelperUtil類onCreate()方法中使用db.execSQL(CREATE_ COURSE )去執(zhí)行了這條建表語句,course表也就創(chuàng)建成功了?,F(xiàn)在,我們只要獲取SQLLiteDatabase的實例,數(shù)據(jù)庫表就會自動創(chuàng)建了,如下所示:

      SQLLiteOpenHelper dbHelper=new SQLLiteHelperUtil(this,”spdb.db”,null,1);

      SQLLiteDatabase db=dbHelper.getWritableDatabase();

      二、LitePal的使用方法

      2.1引入Jar包

      首先,我們需要將LitePal的jar包引入到項目當中,下載好了jar包之后,把它復制到項目的libs目錄中就算是引入成功了,如下圖所示:

      2.2配置litepal.xml

      接著在項目的assets目錄下面新建一個litepal.xml文件,并將以下代碼輸入進去:

      <?xml version=”1.0” encoding=”utf-8”?>

      配置文件相當簡單,用于設定數(shù)據(jù)庫的名字,用于設定數(shù)據(jù)庫的版本號,用于設定所有的映射模型,我們稍后就會用到。

      2.3配置LitePalApplication

      由于操作數(shù)據(jù)庫時需要用到Context,而我們顯然不希望在每個接口中都去傳一遍這個參數(shù),那樣操作數(shù)據(jù)庫就顯得太繁瑣了。因此,LitePal使用了一個方法來簡化掉Context這個參數(shù),只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的數(shù)據(jù)庫操作就都不用再傳Context了,如下圖所示:

      僅僅三步,我們的配置就已經(jīng)完成了。

      LitePal采取的是對象關系映射(ORM)的模式,那么什么是對象關系映射呢?簡單點說,我們使用的編程語言是面向對象語言,而我們使用的數(shù)據(jù)庫則是關系型數(shù)據(jù)庫,那么將面向對象的語言和面向關系的數(shù)據(jù)庫之間建立一種映射關系,這就是對象關系映射了。

      那么接下來我們就看一看LitePal中是如何建表的吧。根據(jù)對象關系映射模式的理念,每一張表都應該對應一個模型(Model),也就是說,如果我們想要建一張course表,就應該有一個對應的course模型類。新建一個course類,如下所示:

      Public class Course extends DataSupport{

      Private int id;

      Private String courseName;

      Private String classroom;

      Private String teacher;

      Private int dayOfWeek;

      //自動生成的Get和Set方法

      }

      現(xiàn)在模型類已經(jīng)建好了,我們還差最后一步,就是將它配置到映射列表當中。編輯assets目錄下的litepal.xml文件,在標簽中加入course模型類的聲明:

      <?xml version=”1.0” encoding=”utf-8”?>

      OK,這樣所有的工作就都已經(jīng)完成了,現(xiàn)在只要你對數(shù)據(jù)庫有任何的操作,course表就會被自動創(chuàng)建出來。比如說LitePal提供了一個便捷的方法來獲取到SQLiteDatabase的實例,如下所示:

      SQLiteDatabase db = Connector.getDatabase();

      我們在操作Course表時只需要調(diào)用對象course.save或者course.find或者course.findAll()即可實現(xiàn)表格的保存和查詢操作。

      由于大多數(shù)的程序員都很擅長面向對象編程,只有少部分的人才比較精通關系型數(shù)據(jù)庫。而且數(shù)據(jù)庫的SQL語言晦澀難懂,就算你很精通它,恐怕也不喜歡經(jīng)常在代碼中去寫它吧?有了litePal,你就可以從繁瑣的數(shù)據(jù)庫操作中解放出來,專心處理事物邏輯了。

      參 考 文 獻

      [1]馬獲蕾. Android系統(tǒng)中SQLite數(shù)據(jù)庫的研究.電腦知識與技術,2013年,28期

      [2]王紹祥.手機與數(shù)據(jù)庫的一種數(shù)據(jù)交互方法.鄭州輕工業(yè)學院學報(自然科學版),2011年,06期

      [3]權重民.利用JSON實現(xiàn)Android高效、安全訪問遠程數(shù)據(jù)庫的一種方式.韶關學院學報,2011年,12期

      猜你喜歡
      數(shù)據(jù)庫
      數(shù)據(jù)庫
      數(shù)據(jù)庫
      數(shù)據(jù)庫
      數(shù)據(jù)庫
      數(shù)據(jù)庫
      數(shù)據(jù)庫
      榆中县| 泰顺县| 永新县| 丹东市| 墨竹工卡县| 平武县| 项城市| 大宁县| 隆回县| 馆陶县| 自贡市| 辛集市| 开封县| 温宿县| 织金县| 盐山县| 弋阳县| 永德县| 肥乡县| 当涂县| 金阳县| 喀什市| 富宁县| 张家川| 张北县| 江山市| 都昌县| 临朐县| 宁乡县| 兴义市| 霞浦县| 枝江市| 武平县| 建德市| 突泉县| 沙田区| 犍为县| 遵义县| 宁陵县| 山西省| 天柱县|