亚洲免费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
        久草视频在线手机免费看| 日本a级大片免费观看| 成年毛片18成年毛片| 国产精品成人av一区二区三区| 人妻精品久久久久中文字幕69| 人与嘼交av免费| 免费观看激色视频网站| 欧美性猛交xxxx乱大交蜜桃| 一亚洲一区二区中文字幕| 国内揄拍国内精品人妻久久| 国产成+人欧美+综合在线观看 | 国产精品久久av高潮呻吟| 国产极品美女高潮无套| 精品国产一区二区三区香蕉| aaaaaa级特色特黄的毛片| 91精品日本久久久久久牛牛| 国产蜜桃传媒在线观看| 无码gogo大胆啪啪艺术| 日韩精品无码久久久久久| 国产高清黄色在线观看91| 亚洲av成人久久精品| 国产婷婷色一区二区三区深爱网| 无码不卡av东京热毛片| 国模无码视频专区一区| 偷拍熟女露出喷水在线91| 久久婷婷色香五月综合缴缴情 | 日本a在线免费观看| 国产一级黄色片一区二区| 亚洲av午夜福利精品一区| 欧美日韩精品一区二区在线视频 | 亚洲精品综合欧美一区二区三区| 第十色丰满无码| 久久精品一区二区熟女| 天天爽夜夜爱| 国产亚洲精久久久久久无码苍井空 | 无码人妻丰满熟妇精品区| 99久久无色码中文字幕鲁信| av中文字幕一区不卡| 日韩亚洲av无码一区二区不卡 | 国产日韩午夜视频在线观看 | 91精品国产综合久久青草|