HarmonyOS數據管理·關系型數據庫的應用

      網友投稿 1031 2022-05-29

      關系型數據庫(Relational Database,RDB)是一種基于關系模型來管理數據的數據庫。HarmonyOS 關系型數據庫基于 SQLite 組件提供了一套完整的對本地數據庫進行管理的機制,對外提供了一系列的增、刪、改、查接口,也可以直接運行用戶輸入的 SQL 語句來滿足復雜的場景需要。HarmonyOS 提供的關系型數據庫功能更加完善,查詢效率更高。

      關系型數據庫:創建在關系模型基礎上的數據庫,以行和列的形式存儲數據。

      謂詞:數據庫中用來代表數據實體的性質、特征或者數據實體之間關系的詞項,主要用來定義數據庫的操作條件。

      結果集:指用戶查詢之后的結果集合,可以對數據進行訪問。結果集提供了靈活的數據訪問方式,可以更方便的拿到用戶想要的數據。

      SQLite 數據庫:一款輕型的數據庫,是遵守 ACID 的關系型數據庫管理系統,它是一個開源的項目。

      HarmonyOS 關系型數據庫對外提供通用的操作接口,底層使用 SQLite 作為持久化存儲引擎,支持 SQLite 具有的所有數據庫特性,包括但不限于事務、索引、視圖、觸發器、外鍵、參數化查詢和預編譯 SQL 語句。

      關系型數據庫運作機制如下圖所示:

      如果不指定數據庫的日志模式,那么系統默認日志方式是 WAL(Write Ahead Log)模式。

      如果不指定數據庫的落盤模式,那么系統默認落盤方式是 FULL 模式。

      HarmonyOS 數據庫使用的共享內存默認大小是 2MB。

      數據庫中連接池的最大數量是 4 個,用以管理用戶的讀寫操作。

      為保證數據的準確性,數據庫同一時間只能支持一個寫操作。

      關系型數據庫是在 SQLite 基礎上實現的本地數據操作機制,提供給用戶無需編寫原生 SQL 語句就能進行數據增刪改查的方法,同時也支持原生 SQL 操作。

      關系型數據庫提供了數據庫創建方式,以及對應的刪除接口,涉及的 API 如下所示:

      關系型數據庫提供數據庫加密的能力,創建數據庫時傳入指定密鑰、創建加密數據庫,后續打開加密數據庫時,需要傳入正確密鑰。

      數據庫傳入密鑰接口如下:

      關系型數據庫提供本地數據增刪改查操作的能力。

      新增:關系型數據庫提供了插入數據的接口,通過 ValuesBucket 輸入要存儲的數據,通過返回值判斷是否插入成功,插入成功時返回最新插入數據所在的行號,失敗則返回-1。數據庫插入 API 如下所示:

      更新:調用更新接口,傳入要更新的數據,并通過 AbsRdbPredicates 指定更新條件。該接口的返回值表示更新操作影響的行數。如果更新失敗,則返回 0。數據庫更新 API 如下:

      HarmonyOS之數據管理·關系型數據庫的應用

      刪除:調用刪除接口,通過 AbsRdbPredicates 指定刪除條件,該接口的返回值表示刪除的數據行數,可根據此值判斷是否刪除成功。如果刪除失敗,則返回 0。數據庫刪除 API 如下:

      查詢:關系型數據庫提供了兩種查詢數據的方式:

      直接調用查詢接口,使用該接口,會將包含查詢條件的謂詞自動拼接成完整的 SQL 語句進行查詢操作,無需用戶傳入原生的 SQL。

      執行原生的用于查詢的 SQL 語句。

      數據庫查詢 API 如下:

      關系型數據庫提供了用于設置數據庫操作條件的謂詞 AbsRdbPredicates,其中包括兩個實現子類 RdbPredicates 和 RawRdbPredicates:

      RdbPredicates:開發者無需編寫復雜的 SQL 語句,僅通過調用該類中條件相關的方法,如 equalTo、notEqualTo、groupBy、orderByAsc、beginsWith 等,就可自動完成SQL 語句拼接,方便用戶聚焦業務操作。

      RawRdbPredicates:可滿足復雜 SQL 語句的場景,支持開發者自己設置 where 條件子句和 whereArgs 參數。不支持 equalTo 等條件接口的使用。

      數據庫謂詞 API 如下:

      關系型數據庫提供了查詢返回的結果集 ResultSet,指向查詢結果中的一行數據,供用戶對查詢結果進行遍歷和訪問。ResultSet 的對外 API 如下表格:

      關系型數據庫提供事務機制,來保證用戶操作的原子性。對單條數據進行數據庫操作時,無需開啟事務;插入大量數據時,開啟事務可以保證數據的準確性。如果中途操作出現失敗,會執行回滾操作。

      事務 API 如下:

      關系型數據庫提供了事務和結果集觀察者能力,當對應的事件被觸發時,觀察者會收到通知。

      API 如下所示:

      用戶可以將當前數據庫的數據進行保存進行備份,還可以在需要的時候進行數據恢復。

      數據庫備份和恢復 API 如下:

      配置數據庫相關信息,包括數據庫的名稱、存儲模式、是否為只讀模式等。

      初始化數據庫表結構和相關數據。

      創建數據庫。

      StoreConfig config = StoreConfig.newDefaultConfig("RdbStoreTest.db"); private static RdbOpenCallback callback = new RdbOpenCallback() { @Override public void onCreate(RdbStore store) { store.executeSql("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, salary REAL, blobType BLOB)"); } @Override public void onUpgrade(RdbStore store, int oldVersion, int newVersion) { } }; DatabaseHelper helper = new DatabaseHelper(context); RdbStore store = helper.getRdbStore(config, 1, callback, null);

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      構造要插入的數據,以 ValuesBucket 形式存儲。

      調用關系型數據庫提供的插入接口。

      ValuesBucket values = new ValuesBucket(); values.putInteger("id", 1); values.putString("name", "zhangsan"); values.putInteger("age", 18); values.putDouble("salary", 100.5); values.putByteArray("blobType", new byte[] {1, 2, 3}); long id = store.insert("test", values);

      1

      2

      3

      4

      5

      6

      7

      構造用于查詢的謂詞對象,設置查詢條件。

      指定查詢返回的數據列。

      調用查詢接口查詢數據。

      調用結果集接口,遍歷返回結果。

      String[] columns = new String[] {"id", "name", "age", "salary"}; RdbPredicates rdbPredicates = new RdbPredicates("test").equalTo("age", 25).orderByAsc("salary"); ResultSet resultSet = store.query(rdbPredicates, columns); resultSet.goToNextRow();

      1

      2

      3

      4

      HarmonyOS之基于Data Ability的關系型數據庫操作方法。

      數據庫 數據管理服務 DAS

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:JVM學習第一篇思考:一個Java代碼是怎么運行起來的-上篇
      下一篇:【愚公系列】2022年01月 Java教學課程 52-File文件操作
      相關文章
      理论亚洲区美一区二区三区| 欧洲亚洲综合一区二区三区| 亚洲一区二区三区乱码A| 亚洲AV日韩AV永久无码色欲| 亚洲精品国产精品| 亚洲老熟女五十路老熟女bbw | 亚洲国产成人乱码精品女人久久久不卡 | 亚洲永久中文字幕在线| 日韩精品一区二区亚洲AV观看| 亚洲av日韩av不卡在线观看| 国产亚洲精品资源在线26u| 亚洲精品午夜国产VA久久成人| 亚洲色婷婷综合久久| 亚洲日韩国产精品第一页一区| 国产gv天堂亚洲国产gv刚刚碰| 怡红院亚洲怡红院首页| 亚洲乱码无码永久不卡在线| 久久亚洲高清观看| 亚洲精品在线观看视频| 中文字幕亚洲综合精品一区| 亚洲国产模特在线播放| 亚洲欧洲日韩极速播放| 亚洲av日韩av永久在线观看| 亚洲国产综合精品中文字幕 | 亚洲成人动漫在线观看| 亚洲一区二区三区免费在线观看 | 亚洲1234区乱码| 亚洲熟妇无码av另类vr影视| 亚洲经典千人经典日产| 无码欧精品亚洲日韩一区夜夜嗨| 亚洲国产精品一区二区第一页免| 亚洲五月午夜免费在线视频| 亚洲热妇无码AV在线播放| 久久亚洲一区二区| 亚洲校园春色小说| 亚洲一区AV无码少妇电影| 在线观看亚洲网站| 丝袜熟女国偷自产中文字幕亚洲| 国产l精品国产亚洲区在线观看| 亚洲五月激情综合图片区| 激情亚洲一区国产精品|