Android數(shù)據(jù)庫(kù)管理-ActiveAndroid

ActiveAndroid是一個(gè)輕量級(jí)的ORM框架,可以以類的方式簡(jiǎn)單快捷地進(jìn)行數(shù)據(jù)庫(kù)的管理,而無需編寫一個(gè)單獨(dú)的SQL語(yǔ)句。
ActiveAndroid git地址
CSDN同步發(fā)布

配置

1、AndroidManifeset中添加如下配置:

        <application
        ...
        android:name="com.activeandroid.app.Application"
        >

        <meta-data
            android:name="AA_DB_NAME"
            android:value="xxx.db" />
        <meta-data
            android:name="AA_DB_VERSION"
            android:value="7" />

        <meta-data
            android:name="AA_MODELS"
            android:value="com.syd.oden.odendemo.entity.sqltab.LocationTab, com.syd.oden.odendemo.entity.sqltab.MusicFavorTab" />

AA_MODELS為數(shù)據(jù)庫(kù)中表的實(shí)體類

2、Application繼承com.activeandroid.app.Application

public class MyApplication extends com.activeandroid.app.Application {}

或者

public class MyApplication extends SomeLibraryApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        ActiveAndroid.initialize(this);
    }
        @Override
    public void onTerminate() {
        super.onTerminate();
        ActiveAndroid.dispose();
    }
}

3、創(chuàng)建表

@Table(name = "PictureTabs")
public class PictureTab extends Model {
    private static MyLog myLog = new MyLog("[PictureTab] ");

    @Column(name = "dirName")
    String dirName;

    @Column(name = "fileName")
    String fileName;

    @Column(name = "describe")
    String describe;

    @Column(name = "longitude")
    double longitude;

    @Column(name = "latitude")
    double latitude;

    public PictureTab() {
        super();
    }

    public PictureTab(String dirName, String fileName, double longitude, double latitude) {
        super();
        this.dirName = dirName;
        this.fileName = fileName;
        this.longitude = longitude;
        this.latitude = latitude;
    }
}

增刪改查

       for (int i=0; i<5; i++) {
            DbBlesGroup dbBleGroup = new DbBlesGroup();
            dbBleGroup.groupIndex = i;
            dbBleGroup.groupName = "groupName" + i;
            dbBleGroup.addr = "addr" + i;
            dbBleGroup.name = "name" + i;
            dbBleGroup.save();
        }

查出所有

List<DbBlesGroup> dbBleGroupList = new ArrayList<>();
        dbBleGroupList = new Select()
                .from(DbBlesGroup.class)
                .orderBy("groupName ASC")
                .execute();

        for (int i=0; i<dbBleGroupList.size(); i++)
        {
            L.d("dbBleGroupList :" + dbBleGroupList.get(i).groupName);
        }

指定條件查找

List<DbBlesGroup> dbBleGroupList = new ArrayList<>();
        dbBleGroupList = new Select()
                .from(DbBlesGroup.class)
                .where("groupName = ?", "groupName3")
                .orderBy("groupName ASC")
                .execute();

多條件查找

newSelect().from(UserViewTab.class).where("viewId=? and bleAddr=?",viewId,addr).executeSingle();

使用事務(wù)(transaction)

ActiveAndroid.beginTransaction();
try {
        for (int i = 0; i < 100; i++) {
            Item item = new Item();
            item.name = "Example " + i;
            item.save();
        }
        ActiveAndroid.setTransactionSuccessful();
}
finally {
        ActiveAndroid.endTransaction();
}

.orderBy("id DESC")降序
.orderBy("id ASC")升序

刪除

new Delete().from(DbBlesGroup.class).where("groupName = ?", "groupName2").execute();

new Update(DbBlesGroup.class).set("addr = ?", "123").where("groupName = ?", "groupName2").execute();

也可直接用save修改

注意事項(xiàng)

1、構(gòu)造方法中記得加入super();

2、在sudio2.2運(yùn)行報(bào)錯(cuò)解決:

erro: 'java.lang.String com.activeandroid.TableInfo.getTableName()' on a null object reference.

關(guān)掉Instant Run



3、表中包含另一個(gè)表,則保存的時(shí)候要先保存另一個(gè)表;
發(fā)現(xiàn)一個(gè)bug,表中包含另一個(gè)表,查另一個(gè)表里的數(shù)據(jù)可能有誤

 recipeAlarmList.add(RecipeAlarmTab.getById(recipeTab.getRecipeAlarmTab1().getId())); //activeAndroid貌似有bug,故通過ID重新查詢一次
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評(píng)論 6 342
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,734評(píng)論 18 399
  • 拼車事件的覺察2017.10.7 【事件】 晚上拼車回來,A沒有與我們商量確認(rèn)好目的地點(diǎn),就直接匆忙叫了快車,來的...
    靈魂心之所向閱讀 522評(píng)論 2 1
  • #放下期待,收獲驚喜# 2017-05-17 21/30 Q23五組/ Q27三組家長(zhǎng)助教-胡艷麗-踐行打卡 加油...
    悅簡(jiǎn)悅已_艷麗閱讀 374評(píng)論 0 0

友情鏈接更多精彩內(nèi)容