当前位置: 首页 > 科技观察

鸿蒙HarmonyOS三方软件开发指南(6)-ActiveOhos_sqlite组件_0

时间:2023-03-21 17:27:02 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz1。ActiveOhos功能介绍1.1.组件介绍HarmonyOS数据库用于操作sqlite数据库。创建连接很麻烦。该组件简化了与sqlite数据库的连接,并对HarmonyOS原生API进行了封装和强化,使sqlite数据库的读写更加方便。1.2.在手机模拟器上运行插入数据成功的效果。2.如何使用ActiveOhos2.1。为应用添加sqlitelibrary-debug.har包依赖,在应用模块中调用HAR。-debug.har可以复制到entry\libs目录下(因为build.gradle已经依赖了libs目录下的*.har,所以不需要修改)。检查项目目录下的build.gradle下是否有*.har。第二步:除了依赖har之外,还需要添加外部依赖来实现类的引入。导入方法如下。导入后即可同步使用。如果使用注解处理器的模块是“com.huawei.ohos.hap”,需要在模块“build.gradle”文件的“ohos”节点添加如下配置:compileOptions{annotationEnabledtrue}如果模块使用注解处理器为“com.huawei.ohos.library”,需要在模块“build.gradle”文件的“dependencies”节点配置注解处理器。查看HUAWEISDK中“orm_annotations_java.jar”、“orm_annotations_processor_java.jar”、“javapoet_java.jar”对应的目录,将这三个jar包导入到工程中。依赖{compilefiles(“orm_annotations_java.jar的路径”,“orm_annotations_processor_java.jar的路径”,“javapoet_java.jar的路径”)path")}如果使用注解处理器的模块是“java-library”,需要在模块的“build.gradle”文件的“dependencies”节点配置注解处理器,导入“ohos.jar”。dependencies{compilefiles("ohos.jar路径","orm_annotations_java.jar路径","orm_annotations_processor_java.jar路径","javapoet_java.jar路径")annotationProcessorfiles("orm_annotations_java.jar路径","orm_annotations_processor_java.jar"的路径,"javapoet_java.jar的路径")}例如:以上操作无误后,就可以开始编码了!3.ActiveOhos的开发与实现3.1.主页面的布局文件定义了四个按钮实现添加、删除、修改和查询分别定义四个Button实现请求点击事件ohos:width="match_content"ohos:background_element="$graphic:background_ability_main"ohos:layout_alignment="horizo??ntal_center"ohos:text="获取请求"ohos:text_size="50"ohos:top_margin="80vp"/>3.2。在示例代码中,以下组件中有两种连接数据的方式,即OrmContext和RdbStore。使用OrmContext连接方式时,需要定义一个实体Class(User)对应数据库的表名和字段,一个数据库类BookStore配合开发,代码如下:MainAbilitySliceimportcom.example.myapplication.BookStore;importcom.example.myapplication.ResourceTable;importcom.example.myapplication.User;importcom。example.sqlitelibrary.DBManage;importcom.example.sqlitelibrary.DBOrmContext;importcom.example.sqlitelibrary.utils.Log;importohos.aafwk.ability.AbilitySlice;importohos.aafwk.content.Intent;importohos.agp.components.Button;importohos。agp.components.Component;importohos.data.DatabaseHelper;importohos.data.orm.OrmContext;importohos.data.orm.OrmPredicates;importohos.data.rdb.RdbStore;importohos.data.rdb.ValuesBucket;importjava.util.ArrayList;importjava.util.List;publicclassMainAbilitySliceextendsAbilitySliceimplementsComponent.ClickedListener{privateDatabaseHelperhelper;privateRdbStorestore;privateOrmContextcontext;@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);helper=newDatabaseHelper(this);DBManagedbManger=newDBManage("user.db","user");context=dbManger。getConnectionContext(helper,BookStore.class);//DBManagedbManger=newDBManage("user.db");//store=dbManger.getConnectionStore(helper,"user");ButtonbtnInsert=(Button)findComponentById(ResourceTable.Id_btn_insert);ButtonbtnQuery=(按钮)findComponentById(ResourceTable.Id_btn_query);ButtonbtnDelete=(Button)findComponentById(ResourceTable.Id_btn_delete);ButtonbtnUpdate=(按钮)findComponentById(ResourceTable.Id_btn_update);btnInsert.setClickedListener(this::onClick);btnQuery.setClickedListener(this::onClick)::onClick);btnDelete.setClickedListener(this::onClick);btnUpdate.setClickedListener(this::onClick);}@OverridepublicvoidonActive(){super.onActive();}@OverridepublicvoidonForeground(Intentintent){super.onForeground(intent);}@OverridepublicvoidonClick(Componentcomponent){//RdbStoreManagerdbStoreMange=newRdbStoreManage();//ValuesBucketvalues=newValuesBucket();//values.putInteger("id",1);//值.putString("name","zhangsan");//values.putInteger("age",18);//values.putDouble("salary",100.5);//values.putByteArray("blobType",newbyte[]{1,2,3});//rdbStoreMange.setSql(store,"insertintouservalues(zhangsan,18,100.5,byte[1,2,3])");//longid=rdbStoreMange.insert(store,"user",values);//System.out.println(id);DBOrmContextdbOrmContext=newDBOrmContext();switch(component.getId()){caseResourceTable.Id_btn_insert://插入数据//第一次使用user对应的表时,如果有这张表就直接用,如果没有就建表Useruser=newUser();user.setFirstName("张");user.setLastName("三");user.setAge(29);user。setBalance(100.51);booleanb=dbOrmContext.insert(context,user);Log.i("插入成功");System.out.println(b);break;caseResourceTable.Id_btn_query://条件查询Listusers=newArrayList<>();OrmPredicatesquery=context.where(User.class).equalTo("lastName","San");users=dbOrmContext.query(context,query);break;caseResourceTable.Id_btn_delete://条件删除OrmPredicatesdelete=context.where(User.class).equalTo("lastName","San");intdelete1=dbOrmContext.delete(context,delete);System.out。println(delete1);break;caseResourceTable.Id_btn_update://条件更新ValuesBucketvaluesBucket=newValuesBucket();valuesBucket.putInteger("age",31);valuesBucket.putString("firstName","Zhang");valuesBucket.putString("lastName","San");valuesBucket.putDouble("balance",300.51);OrmPredicatesupdate=context.where(User.class).equalTo("userId",1);intupdate1=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)})publicclassUserextendsOrmObject{//这里设置userId为自增主键,注意自增主键只有在数据类型为封装类型时才会生效@PrimaryKey(autoGenerate=true)privateIntegeruserId;privateStringfirstName;privateStringlastName;privateintage;privatedoublebalance;privateintignoreColumn1;privateintignoreColumn2;//开发者自行为字段添加getter和setter方法BookStore.java@Database(entities={User.class},version=1)publicabstractclassBookStoreextendsOrmDatabase{}项目源码地址:https://github.com/isoftstone-dev/Active_HarmonyOS欢迎交流:HWIS-HOS@isoftstone.com?版权归作者及HarmonyOS技术社区所有,如需转载请注明出处,否则将追究法律责任。莫尔e信息请访问:与华为官方共建Harmonyos技术社区https://harmonyos.51cto.com/#zz