零基礎(chǔ)學(xué)鴻蒙編程-關(guān)系數(shù)據(jù)庫

什么是關(guān)系數(shù)據(jù)庫

鴻蒙關(guān)系數(shù)據(jù)庫是適合在移動設(shè)備上使用的輕量型關(guān)系型數(shù)據(jù)庫,速度快,占用空間小.與輕量數(shù)據(jù)庫適合存儲少量簡單類型數(shù)據(jù)相反,關(guān)系數(shù)據(jù)庫適合存儲大量復(fù)雜類型的數(shù)據(jù).

基礎(chǔ)樣例

  1. 拷貝數(shù)據(jù)庫相關(guān)依賴jar到工程目錄下
  • 文件:orm_annotations_java.jar和orm_annotations_processor_java.jar
    存放目錄樣例:D:\Program Files\Huawei\sdk\java\3.0.0.0\build-tools\lib


  • 拷貝到工程entry目錄下libs里


  1. 修改工程的build.gradle文件
    添加如下行:
annotationProcessor files("./libs/orm_annotations_java.jar", "./libs/orm_annotations_processor_java.jar")
  1. 添加數(shù)據(jù)庫對象定義:OrmUser.java
@Entity(tableName = "OrmUser")
public class OrmUser extends OrmObject {
    @PrimaryKey(autoGenerate = true)
    private int id;
    private int userId;
    private String userName;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}
  1. 添加數(shù)據(jù)庫操作對象定義:OrmDBDemo.java
@Database(entities = {OrmUser.class}, version = 1)
public abstract class OrmDBDemo extends OrmDatabase {
}
  1. 修改Slice代碼:MainAbilitySlice.java
public class MainAbilitySlice extends AbilitySlice {
    private OrmContext ormContext;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        findComponentById(ResourceTable.Id_writeText).setClickedListener(component -> write());
        findComponentById(ResourceTable.Id_readText).setClickedListener(component -> read());
        findComponentById(ResourceTable.Id_modifyText).setClickedListener(component -> modify());
        findComponentById(ResourceTable.Id_delText).setClickedListener(component -> del());

        initDb();
    }

    private void initDb() {
        DatabaseHelper databaseHelper = new DatabaseHelper(this);
        ormContext = databaseHelper.getOrmContext("OrmDBTest", "OrmDBTest.db", OrmDBDemo.class);
    }

    private void write() {
        int userId = 1;
        OrmUser ormUser = new OrmUser();
        ormUser.setUserId(userId);
        ormUser.setUserName("花生皮編程");
        ormContext.insert(ormUser);
        ormContext.flush();
    }

    private void read() {
        List<OrmUser> ormUsers = query();
        new ToastDialog(getContext()).setText(ormUsers.get(0).getUserName()).show();
    }

    private List<OrmUser> query() {
        //查詢userId = 1的數(shù)據(jù)
        int userId = 1;
        OrmPredicates ormPredicates = ormContext.where(OrmUser.class).equalTo("userId", userId);
        return ormContext.query(ormPredicates);
    }

    private void modify() {
        //將查詢出來的數(shù)據(jù)值修改后更新到數(shù)據(jù)庫
        OrmUser ormUser = query().get(0);
        if (ormUser == null) {
            return;
        }
        ormUser.setUserName("花生皮編程2");
        ormContext.update(ormUser);
        ormContext.flush();
    }

    private void del() {
        //將查詢出來的第一條數(shù)據(jù)從數(shù)據(jù)庫中刪除
        OrmUser ormUser = query().get(0);
        if (ormUser == null) {
            return;
        }
        ormContext.delete(ormUser);
        ormContext.flush();
    }
}
  1. 對應(yīng)頁面布局文件:
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:alignment="center"
    ohos:orientation="vertical">

    <Text
        ohos:id="$+id:writeText"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text="寫數(shù)據(jù)"
        ohos:text_size="20fp"/>

    <Text
        ohos:id="$+id:readText"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text="讀數(shù)據(jù)"
        ohos:text_size="20fp"/>

    <Text
        ohos:id="$+id:modifyText"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text="修改數(shù)據(jù)"
        ohos:text_size="20fp"/>

    <Text
        ohos:id="$+id:delText"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text="刪除數(shù)據(jù)"
        ohos:text_size="20fp"/>
</DirectionalLayout>

PS: 上述代碼已包含數(shù)據(jù)庫常見的增刪改查功能,代碼已優(yōu)化至最簡。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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