当前位置: 首页 > news >正文

东莞网站设计制作湛江网站建设优化推广

东莞网站设计制作,湛江网站建设优化推广,网页界面设计罗军,高端的网红民宿设计从API Version 9开始#xff0c;鸿蒙开发中sqlite使用新接口ohos.data.relationalStore 但是 relationalStore在 getRdbStore操作时#xff0c;在预览模式运行或者远程模拟器运行都会报错#xff0c;导致无法使用。查了一圈说只有在真机上可以正常使用#xff0c;因此这里…从API Version 9开始鸿蒙开发中sqlite使用新接口ohos.data.relationalStore 但是  relationalStore在 getRdbStore操作时在预览模式运行或者远程模拟器运行都会报错导致无法使用。查了一圈说只有在真机上可以正常使用因此这里暂且使用 ohos.data.rdb 二者的接口非常相似会使用了ohos.data.rdb自然也会使用ohos.data.relationalStore 在harmonyos开发中操作数据库时我们通常习惯将一个功能模块数据库操作全部写在一个ets文件中并export在界面文件中直接导入使用。 1.数据库配置以及建表 新建userDb.ets文件并添加以下代码 import data_rdb from ohos.data.rdb const STORE_CONFIG {name: test.db} const TAB_USER user const CREATE_TABLE_CODE CREATE TABLE IF NOT EXISTS TAB_USER ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT , age TEXT , sex TEXT ) export function createTable(context) {data_rdb.getRdbStore(context,STORE_CONFIG, 1, function (err, rdbStore) {rdbStore.executeSql(CREATE_TABLE_CODE)console.info(create table done.)}) } 在User.ets界面导入并调用  import {createTable} from ../utils/userDbaboutToAppear() {createTable(getContext(this)) } 2.插入数据 userDb.ets文件添加 insertData方法这里需要注意的是promise的用法因为需要将执行结果返回界面所以方法里面多次使用了Promise来返回结果 插入的字段要和数据库字段保持一致。 export function insertData(context,list):any{const promise data_rdb.getRdbStore(context,STORE_CONFIG, 1)return promise.then(async (rdbStore) {let arr:any [];for(let i:number0; ilist.length; i){const obj list[i]const item {name: obj.name,age: obj.age,sex: obj.sex}rdbStore.insert(TAB_USER, item);}console.log(--start)console.log(完了)return true;}) } 在User.ets界面导入并调用  import {insertData} from ../utils/userDbaddData(){let array [];for(let i0; i20; i){array.push({name:张飞i,age: 20i,sex: 男})}insertData(getContext(this), array).then(res{if(res){this.loading falsethis.showDialog(添加成功)this.search(true)}})} 3.查询 userDb.ets文件添加 queryDataPage方法这里用了分页查询的方式还有一种谓词的查询方式请参考官方文档。 export function queryDataPage(context,param):any {let promise data_rdb.getRdbStore(context, STORE_CONFIG, 1)return promise.then(async (rdbStore) {const sql: string select * from TAB_USER where name like ? order by id asc limit ? OFFSET ? ;console.log(----sql---, sql)const pS param.pageSizeconst page param.pageconsole.log(param.code, param.code)console.log(pS, pS)console.log((page-1)*pS, (page - 1) * pS)// param.code,pS,(page-1)*pS]let promisequery rdbStore.querySql(sql, [param.code, pS, (page - 1) * pS])return promisequery.then(async (resultSet) {const rowCount resultSet.rowCount;let list [];console.log(rowCount -- rowCount)resultSet.goToFirstRow();for (let i 0; i rowCount; i) {const name resultSet.getString(resultSet.getColumnIndex(NAME))const age resultSet.getString(resultSet.getColumnIndex(AGE))const sex resultSet.getString(resultSet.getColumnIndex(SEX))const id resultSet.getString(resultSet.getColumnIndex(ID))resultSet.goToNextRow();const data {name,id,age,sex,}list.push(data);}resultSet.close();console.log(--array--, list.length)return list;})}).catch((err) {console.log(Get RdbStore failed, err: err)}) } 在User.ets界面导入并调用  import {queryDataPage} from ../utils/userDbState list:Arrayany []State keyword:string State page:number 1State pageSize:number 20 search(firstPage:boolean){if(firstPage){this.page 1}const params {code: %this.keyword%,page: this.page,pageSize: this.pageSize,}queryDataPage(getContext(this), params).then(data{if(data){console.log(res,JSON.stringify(data));if(this.page 1){this.list data} else {this.list this.list.concat(data);}}})} 4.更新数据 userDb.ets文件添加 updateData方法 export function updateData(context,newInfo):any{const promise data_rdb.getRdbStore(context,STORE_CONFIG, 1)return promise.then(async (rdbStore) {let predicates new data_rdb.RdbPredicates(TAB_USER);predicates.equalTo(id, newInfo.id)let promiseUp rdbStore.update(newInfo, predicates)return promiseUp.then(async (rows) {if(rows 1){return true}}).catch((err) {console.info(Updated failed, err: err)return false})}) } 在User.ets界面导入并调用  import {updateData} from ../utils/userDbupdateOne(item:any){item.name 张飞111updateData(getContext(this), item).then(res{if(res){this.showDialog(更新成功)this.search(true)}})} 5.删除数据 userDb.ets文件添加 deleteOneData方法 export function deteteOneData(context,id):any{const promise data_rdb.getRdbStore(context,STORE_CONFIG, 1)return promise.then(async (rdbStore) {let predicates new data_rdb.RdbPredicates(TAB_USER);predicates.equalTo(id, id)const result rdbStore.delete(predicates);console.log(--result--JSON.stringify(result))return true;}) } 在User.ets界面导入并调用  import {deteteOneData} from ../utils/userDbdeleteOne(id:string){deteteOneData(getContext(this), id).then(res{if(res){this.showDialog(删除成功)this.search(true)}})} 6.界面效果 点击右上角Add按钮插入数据 点击删除按钮删除一条数据 点击编辑按钮将该条数据姓名字段更新为 马超000。 7.完整代码 界面文件 User.ets import {createTable,insertData,deteteOneData,updateData,queryDataPage} from ../utils/userDb Entry Component struct User {controller: SearchController new SearchController()State codeList:Arrayany [];State list:Arrayany [];State loading:boolean false;State keyword:string ;State page:number 1;State pageSize:number 20;aboutToAppear() {createTable(getContext(this))}onReachEnd(){console.log(--------onReachEnd---);//this.page this.page1this.search(false)}search(firstPage:boolean){if(firstPage){this.page 1}const params {code: %this.keyword%,page: this.page,pageSize: this.pageSize,}queryDataPage(getContext(this), params).then(data{if(data){console.log(res,JSON.stringify(data));if(this.page 1){this.list data} else {this.list this.list.concat(data);}}})}addData(){let array [];for(let i0; i20; i){array.push({name:张飞i,age: 20i,sex: 男})}insertData(getContext(this), array).then(res{if(res){this.loading falsethis.showDialog(添加成功)this.search(true)}})}deleteOne(id:string){deteteOneData(getContext(this), id).then(res{if(res){this.showDialog(删除成功)this.search(true)}})}updateOne(item:any){item.name 马超000updateData(getContext(this), item).then(res{if(res){this.showDialog(更新成功)this.search(true)}})}showDialog(text:string){AlertDialog.show({title: 提示,message: text,autoCancel: true,alignment: DialogAlignment.Center,gridCount: 4,offset: { dx: 0, dy: -20 },primaryButton: {value: 确定,action: () {console.info(Callback when the first button is clicked)}},})}toAddData(){AlertDialog.show({title: 提示,message: 确定要添加数据吗,autoCancel: true,alignment: DialogAlignment.Center,offset: { dx: 0, dy: -20 },gridCount: 5,primaryButton: {value: 确定,action: () {console.info(确定 is clicked)this.loading truethis.addData()}},secondaryButton: {value: 取消,action: () {console.info(取消 is clicked)}},cancel: () {console.info(Closed callbacks)}})}Builder NavigationMenus() {Row() {Text(Add).width(32).height(28).onClick(()this.toAddData())}}Builder buildList(){Row(){Text(姓名)Text(年龄)Text(性别)Text(操作)}.justifyContent(FlexAlign.SpaceAround).width(100%).padding({top:5,bottom: 10})List({ space: 20, initialIndex: 0 }) {ForEach(this.list, (item) {ListItem() {Row(){Text(item.name)Text(item.age)Text(item.sex)Row(){Text(删除).onClick((){this.deleteOne(item.id)}).fontColor(Color.Red).margin({right:5})Text(编辑).onClick((){this.updateOne(item)}).fontColor(Color.Blue)}}.justifyContent(FlexAlign.SpaceAround).width(100%)}.editable(true)}, item item.name)}.onScrollIndex((firstIndex: number, lastIndex: number) {//console.info(first firstIndex)//console.info(last lastIndex)}).onReachEnd((){this.onReachEnd()}).listDirection(Axis.Vertical) // 排列方向.divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线.edgeEffect(EdgeEffect.None) // 滑动到边缘无效果.chainAnimation(false) // 联动特效关闭.width(100%)}Builder buildSearch(){Search({ value: this.keyword, placeholder: 请输入姓名..., controller: this.controller }).searchButton(搜索).width(100%).height(40).backgroundColor(#F5F5F5).placeholderColor(Color.Grey).placeholderFont({ size: 14, weight: 400 }).textFont({ size: 14, weight: 400 }).onSubmit((value: string) {console.log(---999)//this.submitValue valuethis.keyword valuethis.search(true)}).onChange((value: string) {this.keyword value})}build() {Column(){Navigation() {Column(){this.buildSearch()if(this.loading){Column(){LoadingProgress().color(Color.Blue)}.width(40%).height(40%)}this.buildList()}.height(100%)}.title(用户管理).menus(this.NavigationMenus).titleMode(NavigationTitleMode.Mini)}.height(100%)} } 数据操作文件 userDb.ets import data_rdb from ohos.data.rdb const STORE_CONFIG {name: test.db} const TAB_USER user const CREATE_TABLE_CODE CREATE TABLE IF NOT EXISTS TAB_USER ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT , age TEXT , sex TEXT ) export function createTable(context) {data_rdb.getRdbStore(context,STORE_CONFIG, 1, function (err, rdbStore) {rdbStore.executeSql(CREATE_TABLE_CODE)console.info(create table done.)}) } export function updateData(context,newInfo):any{const promise data_rdb.getRdbStore(context,STORE_CONFIG, 1)return promise.then(async (rdbStore) {let predicates new data_rdb.RdbPredicates(TAB_USER);predicates.equalTo(id, newInfo.id)let promiseUp rdbStore.update(newInfo, predicates)return promiseUp.then(async (rows) {if(rows 1){return true}}).catch((err) {console.info(Updated failed, err: err)return false})}) } export function insertData(context,list):any{const promise data_rdb.getRdbStore(context,STORE_CONFIG, 1)return promise.then(async (rdbStore) {let arr:any [];for(let i:number0; ilist.length; i){const obj list[i]const item {name: obj.name,age: obj.age,sex: obj.sex}rdbStore.insert(TAB_USER, item);}console.log(--start)console.log(完了)return true;}) } export function deteteOneData(context,id):any{const promise data_rdb.getRdbStore(context,STORE_CONFIG, 1)return promise.then(async (rdbStore) {let predicates new data_rdb.RdbPredicates(TAB_USER);predicates.equalTo(id, id)const result rdbStore.delete(predicates);console.log(--result--JSON.stringify(result))return true;}) } export function detelteAllCode(context){data_rdb.getRdbStore(context,STORE_CONFIG, 1, function (err, rdbStore) {rdbStore.executeSql(delete from TAB_USER)console.info(--delete code done.)})} export function queryDataPage(context,param):any {let promise data_rdb.getRdbStore(context, STORE_CONFIG, 1)return promise.then(async (rdbStore) {const sql: string select * from TAB_USER where name like ? order by id asc limit ? OFFSET ? ;console.log(----sql---, sql)const pS param.pageSizeconst page param.pageconsole.log(param.code, param.code)console.log(pS, pS)console.log((page-1)*pS, (page - 1) * pS)// param.code,pS,(page-1)*pS]let promisequery rdbStore.querySql(sql, [param.code, pS, (page - 1) * pS])return promisequery.then(async (resultSet) {const rowCount resultSet.rowCount;let list [];console.log(rowCount -- rowCount)resultSet.goToFirstRow();for (let i 0; i rowCount; i) {const name resultSet.getString(resultSet.getColumnIndex(NAME))const age resultSet.getString(resultSet.getColumnIndex(AGE))const sex resultSet.getString(resultSet.getColumnIndex(SEX))const id resultSet.getString(resultSet.getColumnIndex(ID))resultSet.goToNextRow();const data {name,id,age,sex,}list.push(data);}resultSet.close();console.log(--array--, list.length)return list;})}).catch((err) {console.log(Get RdbStore failed, err: err)}) }
http://www.hkea.cn/news/14507788/

相关文章:

  • 9元包邮网站怎么做wordpress主题和预览不同
  • ps做图 游戏下载网站百度网盘搜索神器
  • 做兼职网上哪个网站好顺德网站建设基本流程
  • 东台网站网站建设呼市网站制作招聘
  • 电脑维护网站模板北京市政建设集团有限责任公司网站
  • 网站内部链接海口模板网站建站
  • 网站静态页面网站好玩代码和特效
  • 中国制造网网站特色公司广告宣传片拍摄
  • 陕西启康建设有限公司网站高级网页设计师证书有用吗
  • 网站设计范文深圳网络公司老板
  • 违法网站建设国外服务器商城建站系统多少钱
  • 指数搜索seo有哪些优缺点?
  • 钻戒网站建设需求原创文章对网站的好处
  • 网站制作推广方案洞头区小程序模板源代码
  • 潍坊建网站北京网站建设手机app电子商务
  • 常德建设网站多少钱成都城乡建设网站
  • 百度收录左侧带图片的网站视频网站怎么制作
  • 免费logo设计网站推荐陕西省建设网三类人员成绩查询
  • 重庆网站建设 cqhtwl南京网站制作公司南京乐识专心
  • 西宁seo网站天津网站设计哪家公司好
  • 生成网站 目录大型门户网站制作流程
  • 从网站建设到网站运营做旅游的网站有哪些
  • 东莞横沥网站设计黑马程序员就业情况
  • 网站付款链接怎么做设计公司名字logo
  • 深圳个人网站设计毕业答辩ppt网站开发
  • 建设一个小说网站wordpress搭建官网视频
  • 河北高阳做网站的网站备案核验点 上海
  • 门户网站的案例分析wordpress柚子皮5.31
  • 网站开发可能遇到的问题电商网站开发过程
  • 编程常用网站湖北企业模板建站信息