亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        申圣兵

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

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

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

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

        在Android的應(yīng)用開發(fā)中,傳統(tǒng)的數(shù)據(jù)庫操作方式是使用 Android操作系統(tǒng)中集成的一個嵌入式關(guān)系型數(shù)據(jù)庫SQLite來進(jìn)行的,它要求開發(fā)人員熟練的掌握SQL語法,操作數(shù)據(jù)庫基本是通過SQL語句來實現(xiàn)的。為了方便我們對數(shù)據(jù)庫表進(jìn)行管理,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) {

        }}

        其中,當(dāng)數(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包引入到項目當(dāng)中,下載好了jar包之后,把它復(fù)制到項目的libs目錄中就算是引入成功了,如下圖所示:

        2.2配置litepal.xml

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

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

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

        2.3配置LitePalApplication

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

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

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

        那么接下來我們就看一看LitePal中是如何建表的吧。根據(jù)對象關(guān)系映射模式的理念,每一張表都應(yīng)該對應(yīng)一個模型(Model),也就是說,如果我們想要建一張course表,就應(yīng)該有一個對應(yīng)的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)建好了,我們還差最后一步,就是將它配置到映射列表當(dāng)中。編輯assets目錄下的litepal.xml文件,在標(biāo)簽中加入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ù)的程序員都很擅長面向?qū)ο缶幊蹋挥猩俨糠值娜瞬疟容^精通關(guān)系型數(shù)據(jù)庫。而且數(shù)據(jù)庫的SQL語言晦澀難懂,就算你很精通它,恐怕也不喜歡經(jīng)常在代碼中去寫它吧?有了litePal,你就可以從繁瑣的數(shù)據(jù)庫操作中解放出來,專心處理事物邏輯了。

        參 考 文 獻(xiàn)

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

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

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

        猜你喜歡
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        財經(jīng)(2017年15期)2017-07-03 22:40:49
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        數(shù)據(jù)庫
        財經(jīng)(2015年3期)2015-06-09 17:41:31
        數(shù)據(jù)庫
        財經(jīng)(2014年21期)2014-08-18 01:50:18
        數(shù)據(jù)庫
        財經(jīng)(2014年6期)2014-03-12 08:28:19
        數(shù)據(jù)庫
        財經(jīng)(2013年6期)2013-04-29 17:59:30
        caoporon国产超碰公开| 久久久久亚洲av片无码v| 国内精品久久久久久久久齐齐| 久久久国产精品ⅤA麻豆百度| av国产自拍在线观看| 国产成人午夜福利在线观看| 国产成人综合亚洲精品| 久久精品一品道久久精品9| 极品新娘高清在线观看| 国产性自爱拍偷在在线播放| 人妻精品动漫h无码网站| 国产亚洲精品国产福利在线观看| 久久99久久久精品人妻一区二区| 色视频网站一区二区三区| 久久久久亚洲av片无码v| 国产精品久久久久久久久免费观看 | 久久中国国产Av秘 入口| 亚洲一区二区三区在线网站| 超高清丝袜美腿视频在线| 在线观看国产视频午夜| 久久成人影院精品777| 亚洲综合色一区二区三区另类| 91蜜桃精品一区二区三区毛片| 国产极品少妇一区二区| 色一情一乱一伦一区二区三区日本| 国内精品国产三级国产av另类| 美女和男人一起插插插| 日韩精品无码一区二区| 欧美丰满熟妇bbbbbb百度| 熟女少妇丰满一区二区| 国产一区二区三区视频网| 国精无码欧精品亚洲一区| 久久久久久久综合日本| 日本在线观看一二三区| 日韩午夜理论免费tv影院| 国产成年女人特黄特色毛片免| 午夜免费福利一区二区无码AV | 影音先锋男人站| 国产成人精品曰本亚洲| 中文字幕日韩高清乱码| 亚洲大尺度无码无码专区|