【軟通動力】HarmonyOS三方件開發指南(6)-ActiveOhos_sqlite元件
1. ActiveOhos功能介紹
1.1. 元件介紹
基於HarmonyOS據庫進行sqlite資料庫操作,建立連線時比較繁瑣,本元件簡化了sqlite資料庫的連線,並且對HarmonyOS原生的API進行封裝加強,使sqlite資料庫的讀寫更加方便。
1.2. 手機模擬器上執行效果
插入資料成功
2. ActiveOhos使用方法
2.1. 為應用新增sqlitelibrary-debug.har包依賴
在應用模組中呼叫HAR,常用的新增依賴為:依賴本地HAR
第一步:將sqlitelibrary-debug.har複製到entry\libs目錄下即可(由於build.gradle中已經依賴的libs目錄下的*.har,因此不需要再做修改)。
檢視工程目錄中build.gradle下的*.har是否存在
第二步:除了依賴har之外還需要新增外部依賴用來實現類的引入,引入方式如下,引入完之後同步即可使用。
-
如果使用註解處理器的模組為“com.huawei.ohos.hap”,則需要在模組 “build.gradle”檔案的“ohos”節點中新增以下配置:
compileOptions{ annotationEnabled true }
-
如果使用註解處理器的模組為“com.huawei.ohos.library”,則需要在模組“build.gradle”檔案的“dependencies”節點中配置註解處理器。檢視“orm_annotations_java.jar”、“orm_annotations_processor_java.jar” 、“javapoet_java.jar” 3個jar包在HUAWEI SDK中的對應目錄,並將這三個jar包匯入專案中。
dependencies { compile files("orm_annotations_java.jar的路徑
,orm_annotations_processor_java.jar的路徑,javapoet_java.jar的路徑)
annotationProcessor files("orm_annotations_java.jar的路徑
,orm_annotations_processor_java.jar的路徑,javapoet_java.jar的路徑)}
-
如果使用註解處理器的模組為“java-library”,則需要在模組 “build.gradle”檔案的“dependencies”節點中配置註解處理器,並匯入“ohos.jar”。
-
dependencies { compile files("ohos.jar的路徑","orm_annotations_java.jar的路徑
-
","orm_annotations_processor_java.jar的路徑","javapoet_java.jar的路徑")
-
annotationProcessor files("orm_annotations_java.jar的路徑
-
","orm_annotations_processor_java.jar的路徑","javapoet_java.jar的路徑")}
-
比如:
-
以上操作無誤 之後就可以進行編碼了!
-
3. ActiveOhos開發實現
-
3.1. 主頁面的佈局檔案
-
定義四個按鈕分別實現增刪改查,定義四個Button實現請求點選事件
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos=" ohos:height="match_parent" ohos:width="match_parent" ohos:orientation="vertical"> <Button ohos:id="$+id:btn_insert" ohos:height="match_content" ohos:width="80fp" ohos:text_color="red" ohos:text="插入" ohos:text_size="20fp" ohos:weight="100fp"/> <Button ohos:id="$+id:btn_query" ohos:height="match_content" ohos:width="100fp" ohos:text_color="blue" ohos:text="查詢" ohos:text_size="20fp" ohos:weight="100fp"/> <Button ohos:id="$+id:btn_update" ohos:height="match_content" ohos:width="100fp" ohos:text_color="green" ohos:text="更新" ohos:text_size="20fp" ohos:weight="100fp"/> <Button ohos:id="$+id:btn_delete" ohos:height="match_content" ohos:width="100fp" ohos:text_color="black" ohos:text="刪除" ohos:text_size="20fp" ohos:weight="100fp"/> <ListContainer ohos:id="$+id:listText" ohos:height="match_parent" ohos:width="match_parent"/> </DirectionalLayout> ohos:width="match_content" ohos:background_element="$graphic:background_ability_main" ohos:layout_alignment="horizontal_center" ohos:text="get請求" ohos:text_size="50" ohos:top_margin="80vp" /> </DirectionalLayout>
-
3.2. 例子程式碼如下
元件中有兩種連線資料的方式,分別是OrmContext,RdbStore ,其中使用OrmContext連線方式時,需要定義一個實體類(User)來和資料庫對應表名及欄位,一個資料庫類 BookStore 來配合開發,程式碼如下:
MainAbilitySlice import com.example.myapplication.BookStore; import com.example.myapplication.ResourceTable; import com.example.myapplication.User; import com.example.sqlitelibrary.DBManage; import com.example.sqlitelibrary.DBOrmContext; import com.example.sqlitelibrary.utils.Log; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.components.Button; import ohos.agp.components.Component; import ohos.data.DatabaseHelper; import ohos.data.orm.OrmContext; import ohos.data.orm.OrmPredicates; import ohos.data.rdb.RdbStore; import ohos.data.rdb.ValuesBucket; import java.util.ArrayList; import java.util.List; public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener { private DatabaseHelper helper; private RdbStore store; private OrmContext context; @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); helper = new DatabaseHelper(this); DBManage dbManger = new DBManage("user.db","user"); context = dbManger.getConnectionContext(helper, BookStore.class); // DBManage dbManger = new DBManage("user.db"); // store = dbManger.getConnectionStore(helper,"user"); Button btnInsert = (Button) findComponentById(ResourceTable.Id_btn_insert); Button btnQuery = (Button) findComponentById(ResourceTable.Id_btn_query); Button btnDelete = (Button) findComponentById(ResourceTable.Id_btn_delete); Button btnUpdate = (Button) findComponentById(ResourceTable.Id_btn_update); btnInsert.setClickedListener(this::onClick); btnQuery.setClickedListener(this::onClick); btnDelete.setClickedListener(this::onClick); btnUpdate.setClickedListener(this::onClick); } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); } @Override public void onClick(Component component) { // RdbStoreManage rdbStoreMange = new RdbStoreManage(); // 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}); // rdbStoreMange.setSql(store, "insert into user values(zhangsan, 18, 100.5, byte[1,2,3])"); // long id = rdbStoreMange.insert(store,"user", values); // System.out.println(id); DBOrmContext dbOrmContext = new DBOrmContext(); switch (component.getId()) { case ResourceTable.Id_btn_insert: //插入資料 //第一次使用user對應的表的時候,如果有這張表就直接使用,沒有就建立表 User user = new User(); user.setFirstName("Zhang"); user.setLastName("San"); user.setAge(29); user.setBalance(100.51); boolean b = dbOrmContext.insert(context, user); Log.i("插入成功"); System.out.println(b); break; case ResourceTable.Id_btn_query: //條件查詢 List<User> users = new ArrayList<>(); OrmPredicates query = context.where(User.class).equalTo("lastName", "San"); users = dbOrmContext.query(context, query); break; case ResourceTable.Id_btn_delete: //條件刪除 OrmPredicates delete = context.where(User.class).equalTo("lastName", "San"); int delete1 = dbOrmContext.delete(context, delete); System.out.println(delete1); break; case ResourceTable.Id_btn_update: //條件更新 ValuesBucket valuesBucket = new ValuesBucket(); valuesBucket.putInteger("age", 31); valuesBucket.putString("firstName", "Zhang"); valuesBucket.putString("lastName", "San"); valuesBucket.putDouble("balance", 300.51); OrmPredicates update = context.where(User.class).equalTo("userId", 1); int update1 = dbOrmContext.update(context, valuesBucket, update); System.out.println(update1); break; } dbOrmContext.flush(context); } } user.java @Entity(tableName = "user", ignoredColumns = {"ignoreColumn1", "ignoreColumn2"}, indices = {@Index(value = {"firstName", "lastName"}, name = "name_index", unique = true)}) public class User extends OrmObject { // 此處將userId設為了自增的主鍵。注意只有在資料型別為包裝型別時,自增主鍵才能生效。 @PrimaryKey(autoGenerate = true) private Integer userId; private String firstName; private String lastName; private int age; private double balance; private int ignoreColumn1; private int ignoreColumn2;
-
// 開發者自行新增欄位的getter和setter 方法
-
專案原始碼地址:https://github.com/isoftstone-dev/Active_HarmonyOS
-
歡迎交流:HWIS-HOS@isoftstone.com
原文連結: https://developer.huawei.com/consumer/cn/forum/topic/0202558662106980609?fid=0101303901040230869
原作者: 軟通動力HOS
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2773902/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HarmonyOS三方件開發指南(15)-LoadingView功能介紹View
- HarmonyOS三方件開發指南(16)-VideoCache 視訊快取IDE快取
- 軟通動力鴻蒙書籍《HarmonyOS應用開發》正式出版鴻蒙
- HarmonyOS 位置服務開發指南
- HarmonyOS開發:HarmonyOS Next 版模擬器使用指南
- 開發者漲薪指南:提升軟、硬實力
- 軟通動力釋出“啟航KS_IoT智慧開發套件”套件
- HarmonyOS 後臺任務管理開發指南上線!
- HarmonyOS NEXT應用開發實戰—元件堆疊元件
- 軟體開發命名指南
- Nuxt 3元件開發與管理UX元件
- 如何開發第三方小程式元件元件
- 融智聚力 軟通動力出席2022用友生態大會 共推良性生態發展
- 特斯拉第三方應用開發指南(一)
- HarmonyOS NEXT開發之ArkTS自定義元件學習筆記元件筆記
- android短視訊開發,仿三方軟體列表滑動Android
- HarmonyOS UI 開發UI
- 提高開發生產力 - 生產力指南篇(之一)
- 6年iOS開發常用的三方庫iOS
- 軟通動力參編報告正式釋出
- HarmonyOS NEXT應用開發案例——滑動頁面資訊隱藏與元件位移效果元件
- 鴻蒙開源第三方元件——連續滾動影像元件鴻蒙元件
- reactnative開發常用優質第三方元件React元件
- 力軟敏捷開發框架幫您開發什麼軟體敏捷框架
- 軟通動力參編《工業網際網路園區指南(2.0版本)》正式釋出
- 軟通動力組建專業科技服務團
- 6月26日,HarmonyOS開發者日將於杭州舉辦
- HarmonyOS NEXT應用開發—翻頁動效案例
- 互聯-創新:軟通動力開源鴻蒙科技總部落戶無錫鴻蒙
- 直播平臺軟體開發,flutter Wrap 自動換行元件Flutter元件
- Nifi元件指令碼開發—ExecuteScript 使用指南(三)Nifi元件指令碼
- Nifi元件指令碼開發—ExecuteScript 使用指南(一)Nifi元件指令碼
- mpvue中小程式自定義導航元件開發指南Vue元件
- 軟通動力為品牌提供全域電商解決方案
- vue3元件通訊與propsVue元件
- 【活動】直播揭秘<如何從0開發HarmonyOS硬體>
- 力扣社群開通力扣
- HarmonyOS:NativeWindow 開發指導