方舟

1cookie 4kb 2localStorage 本地存储数据,5MB 3sessionStorage 会话级别存储,关闭浏览器消失
cookie 4kb localStorage 本地存储数据,5MB sessionStorage 会话级别存储,关闭浏览器消失

用户首选项

1文本形式,一般存储配置,一次性加载到内存 2存储系统字体、系统主题,不适合存储大量数据
文本形式,一般存储配置,一次性加载到内存 存储系统字体、系统主题,不适合存储大量数据

键值型数据库

1键值对方式存储,类似本地存储技术
键值对方式存储,类似本地存储技术

关系型数据库

1行、列形式存储,适合存储大量数据 2可以进行增删改查,SQLite
行、列形式存储,适合存储大量数据 可以进行增删改查,SQLite

1integer 整型 2real 浮点型 3text 文本 4boolean 布尔值 5blob 二进制文件 6date 日期 7datetime 日期时间
integer 整型 real 浮点型 text 文本 boolean 布尔值 blob 二进制文件 date 日期 datetime 日期时间

建表

 1import { relationalStore } from "@kit.ArkData"  2  3class CardDBUtils {  4 private rdbStore: relationalStore.RdbStore | null = null  5  6 /**  7 * 初始化数据库  8 *  9 * @param context 10 * @param tableName 11 */ 12 initCardDB(context: Context, tableName: string) { 13 // 初始化配置 14 const STORE_CONFIG: relationalStore.StoreConfig = { 15 name: 'GoodMall.db', // 数据库名 16 securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别 17 //encrypt: false, // 数据库是否加密 18 //customDir:'customDir/subCustomDir' 19 } 20 21 // 建表SQL 22 const SQL_CREATE_TABLE = `create table if not exists ${tableName} ( 23 id integer primary key autoincrement, 24 good_id text not null, 25 good_name text not null, 26 good_count integer 27 )` 28 29 // 初始化数据库, 异步 30 relationalStore.getRdbStore(context, STORE_CONFIG, (err, store) => { 31 if (err) { 32 console.log(`get rdb failed, ${err.code}, ${err.message}`) 33 return 34 } else { 35 console.log(`get rdb success`) 36 this.rdbStore = store 37 38 // 创建数据表 39 store.executeSql(SQL_CREATE_TABLE, (err) => { 40 if (err) { 41 console.log(`create table ${tableName} failed, ${err.code}, ${err.message}`) 42 } else { 43 console.log(`create table ${tableName} success`) 44 } 45 }) 46 } 47 }) 48 } 49 50 insertCardDB(tableName: string) { 51 52 } 53 54 /** 55 * 56 * @param tableName 57 * @param column 投影列 58 */ 59 queryCardDB(tableName: string, column: Array<String>) { 60 61 } 62} 63 64const cardDBUtils = new CardDBUtils() 65 66export { cardDBUtils }
import { relationalStore } from "@kit.ArkData" class CardDBUtils { private rdbStore: relationalStore.RdbStore | null = null /** * 初始化数据库 * * @param context * @param tableName */ initCardDB(context: Context, tableName: string) { // 初始化配置 const STORE_CONFIG: relationalStore.StoreConfig = { name: 'GoodMall.db', // 数据库名 securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别 //encrypt: false, // 数据库是否加密 //customDir:'customDir/subCustomDir' } // 建表SQL const SQL_CREATE_TABLE = `create table if not exists ${tableName} ( id integer primary key autoincrement, good_id text not null, good_name text not null, good_count integer )` // 初始化数据库, 异步 relationalStore.getRdbStore(context, STORE_CONFIG, (err, store) => { if (err) { console.log(`get rdb failed, ${err.code}, ${err.message}`) return } else { console.log(`get rdb success`) this.rdbStore = store // 创建数据表 store.executeSql(SQL_CREATE_TABLE, (err) => { if (err) { console.log(`create table ${tableName} failed, ${err.code}, ${err.message}`) } else { console.log(`create table ${tableName} success`) } }) } }) } insertCardDB(tableName: string) { } /** * * @param tableName * @param column 投影列 */ queryCardDB(tableName: string, column: Array<String>) { } } const cardDBUtils = new CardDBUtils() export { cardDBUtils }

 1import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';  2import { hilog } from '@kit.PerformanceAnalysisKit';  3import { window } from '@kit.ArkUI';  4import { cardDBUtils } from '../utils/CardDBUtils';  5  6const DOMAIN = 0x0000;  7  8export default class EntryAbility extends UIAbility {  9 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 10 this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); 11 hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); 12 } 13 14 onDestroy(): void { 15 hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy'); 16 } 17 18 onWindowStageCreate(windowStage: window.WindowStage): void { 19 // 加载数据库 20 cardDBUtils.initCardDB(this.context, 'goodcard') 21....
import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { window } from '@kit.ArkUI'; import { cardDBUtils } from '../utils/CardDBUtils'; const DOMAIN = 0x0000; export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); } onDestroy(): void { hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy'); } onWindowStageCreate(windowStage: window.WindowStage): void { // 加载数据库 cardDBUtils.initCardDB(this.context, 'goodcard') ....

1get rdb success 2create table goodcard success
get rdb success create table goodcard success

新增

  1import { router } from '@kit.ArkUI';   2import { findDataByGetApi, findDataByPostApi } from '../apis/ProductApi';   3import { ParamsType } from '../utils/ParamsType';   4import { Evaluate, GoodDetail } from '../viewModel/GoodDetailModel';   5import { ProductDataModel } from '../viewModel/HomeModel';   6import { JSON } from '@kit.ArkTS';   7import { BreakPointConstants } from '../constants/BreakPointConstants';   8import { BreakPointSystem } from '../utils/BreakPointSystem';   9import { relationalStore } from '@kit.ArkData';  10import { cardDBUtils } from '../utils/CardDBUtils';  11  12@Extend(Button)  13function titleButton() {  14 .backgroundColor('rgba(0,0,0,0.1)')  15 .width(30)  16 .height(30)  17 .borderRadius(50)  18}  19  20@Entry({ routeName: 'detail' })  21@Component  22struct Page03_Detail {  23 @State message: string = 'Detail Page';  24 @State gid: string = 'aa'  25 @State evaluate: Evaluate = { 'userId': '1', 'desc': '评论' }  26 @StorageProp(BreakPointConstants.CURRENT_BREAKPOINT) currentBreakPoint: string = 'sm'  27 @State goodDetail: GoodDetail = {  28 id: '1',  29 add_time: '',  30 cat_id: '',  31 cat_one_id: '',  32 cat_two_id: '',  33 cat_three_id: '',  34 good_id: '1234',  35 good_small_logo: ['app.media.bird', 'app.media.animal', 'app.media.bird', 'app.media.animal'],  36 good_big_logo: 'app.media.bird',  37 good_name: '宠物电视',  38 good_number: '',  39 good_price: '1000',  40 good_weight: '',  41 hot_number: '',  42 is_promote: '',  43 upd_time: '',  44 evaluate: [this.evaluate]  45 }  46 @State swiperIndex: number = 0  47 private breakPointSystem = new BreakPointSystem()  48  49 // 挂载完成后获取数据  50 aboutToAppear(): void {  51 const params = router.getParams()  52 console.log(JSON.stringify(params))  53 // 断言告诉编辑器, 明确知道params对象数据类型  54 this.gid = (params as ParamsType<string>).value  55 this.fetchDetailData(this.gid)  56 this.breakPointSystem.register()  57 console.log(this.currentBreakPoint)  58 }  59  60 addCard = () => {  61 const valueBucketDetail: relationalStore.ValuesBucket = {  62 'good_id': this.goodDetail.good_id,  63 'good_name': this.goodDetail.good_name,  64 'good_big_logo': this.goodDetail.good_big_logo,  65 'good_code': this.goodDetail.good_id,  66 'good_price': Number(this.goodDetail.good_price),  67 'good_count': 1,  68 'good_checked': 0  69 }  70  71 cardDBUtils.insertCardDB('goodcard', valueBucketDetail)  72 console.log('add card data success')  73 }  74 fetchDetailData = async (id: string) => {  75 const param: ProductDataModel = new ProductDataModel()  76 param.cat_id = '1'  77 await findDataByPostApi<ProductDataModel, ProductDataModel>(6, param).then(res => {  78 console.log('111')  79 console.log(JSON.stringify(res))  80 console.log('222')  81 })  82 }  83  84 @Builder  85 bottomMenu() {  86 GridRow({  87 columns: { sm: 9, md: 10, lg: 12 }  88 }) {  89 GridCol({  90 span: { sm: 2, md: 3, lg: 3 }  91 }) {  92 this.imageAndText($r('app.media.startIcon'), '首页')  93 }  94 .width('100%')  95 .height('100%')  96  97 GridCol({  98 span: { sm: 2, md: 3, lg: 3 }  99 }) { 100 this.imageAndText($r('app.media.startIcon'), '购物车') 101 } 102 .width('100%') 103 .height('100%') 104 105 GridCol({ 106 span: { sm: 5, md: 4, lg: 6 } 107 }) { 108 Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { 109 Column() { 110 Text('加入购物车') 111 .fontSize(14) 112 .fontColor(Color.White) 113 .onClick(this.addCard) 114 } 115 .alignItems(HorizontalAlign.Center) 116 .justifyContent(FlexAlign.Center) 117 .width('50%') 118 .height('100%') 119 .backgroundColor(Color.Green) 120 121 Column() { 122 Text('立即购买') 123 .fontSize(14) 124 .fontColor(Color.White) 125 } 126 .alignItems(HorizontalAlign.Center) 127 .justifyContent(FlexAlign.Center) 128 .width('50%') 129 .height('100%') 130 .backgroundColor(Color.Orange) 131 } 132 .width('100%') 133 .height(50) 134 .backgroundColor('#f5f5f5') 135 .margin({ 136 top: 5 137 }) 138 } 139 .width('100%') 140 .height('100%') 141 .backgroundColor(Color.Orange) 142 } 143 } 144 145 @Builder 146 imageAndText(imageSrc: Resource, text: string) { 147 Column() { 148 Image(imageSrc) 149 .width(22) 150 Text(text) 151 .fontSize(12) 152 .fontColor('#99000000') 153 .margin({ 154 top: 4 155 }) 156 } 157 .justifyContent(FlexAlign.Center) 158 .alignItems(HorizontalAlign.Center) 159 .width('100%') 160 .height('100%') 161 } 162 163 @Builder 164 customSwiper(payload: string[]) { 165 Column() { 166 Stack({ alignContent: Alignment.BottomEnd }) { 167 // 轮播图组件 168 Swiper() { 169 ForEach(payload, (item: string, index: number) => { 170 Flex({ justifyContent: FlexAlign.Center }) { 171 Image($r(item)) 172 .height('100%') 173 .objectFit(ImageFit.Cover) 174 } 175 }, (item: string) => item) 176 } 177 .indicator(false) 178 .width('100%') 179 .height('100%') 180 .onChange((index: number) => { 181 this.swiperIndex = index 182 }) 183 184 // 构建指示器 185 Text(`${this.swiperIndex + 1}/${payload.length}`) 186 .fontSize(12) 187 .fontColor(Color.White) 188 .textAlign(TextAlign.Center) 189 .width(35) 190 .lineHeight(18) 191 .backgroundColor('#66000000') 192 .borderRadius(9) 193 .margin({ 194 right: 16, 195 bottom: 16 196 }) 197 } 198 .height(334) 199 .width('100%') 200 } 201 .height(this.currentBreakPoint == BreakPointConstants.BREAKPOINT_LG ? '100%' : 334) 202 .backgroundColor(Color.White) 203 } 204 205 @Styles 206 boxCommonStyles(){ 207 .backgroundColor(Color.White) 208 .borderRadius(16) 209 .padding({ 210 left: 12, 211 right: 12, 212 top: 16, 213 bottom: 16 214 }) 215 .margin({ 216 top: 12 217 }) 218 .width('100%') 219 } 220 221 @Builder 222 titleBar(detail: GoodDetail) { 223 Flex({ direction: FlexDirection.Column }) { 224 Text(`¥${this.goodDetail.good_price}`) 225 .fontSize(20) 226 .fontColor(Color.Brown) 227 Text(detail.good_name) 228 .fontSize(16) 229 .fontColor(Color.Black) 230 Row() { 231 // 添加3个小图标 232 } 233 } 234 .height(100) 235 .boxCommonStyles() 236 } 237 238 @Builder 239 ChooseTypeBar() { 240 Flex() { 241 242 } 243 .boxCommonStyles() 244 .height(50) 245 } 246 247 @Builder 248 ServiceBar() { 249 Flex() { 250 251 } 252 .boxCommonStyles() 253 .height(130) 254 } 255 256 @Builder 257 UserEvaluateBar() { 258 Flex() { 259 Text('评论') 260 } 261 .boxCommonStyles() 262 .height(120) 263 } 264 265 build() { 266 Stack({ alignContent: Alignment.TopStart }) { 267 // 内容区域 268 Flex({ direction: FlexDirection.Column }) { 269 Scroll() { 270 GridRow({ 271 columns: { sm: 4, md: 8, lg: 12 }, 272 gutter: 12 273 }) { 274 // 存放轮播图 275 GridCol({ 276 span: { sm: 4, md: 8, lg: 5 } 277 }) { 278 this.customSwiper(this.goodDetail.good_small_logo) 279 } 280 281 GridCol({ 282 span: { sm: 4, md: 8, lg: 7 } 283 }) { 284 Column() { 285 // 价格和标题 286 this.titleBar(this.goodDetail) 287 // 规则模块 288 this.ChooseTypeBar() 289 // 服务模块 290 this.ServiceBar() 291 // 评论模块 292 this.UserEvaluateBar() 293 // 商品展示图 294 295 } 296 .width('100%') 297 .padding({ left: 10, right: 10 }) 298 } 299 } 300 } 301 .width('100%') 302 .flexGrow(1) 303 304 // 底部导航 305 GridRow({ 306 columns: { sm: 4, md: 8, lg: 12 }, 307 gutter: 12 308 }) { 309 GridCol({ 310 span: { sm: 4, md: 6, lg: 6 }, 311 offset: { md: 1, lg: 3 } 312 }) { 313 // 页面局部设计 314 this.bottomMenu(); 315 } 316 } 317 .width('100%') 318 .height(this.currentBreakPoint == BreakPointConstants.BREAKPOINT_LG ? 70 : 60) 319 .backgroundColor(Color.Pink) 320 } 321 322 // 返回按钮 323 Flex({ justifyContent: FlexAlign.SpaceBetween }) { 324 // 返回按钮 325 Button() { 326 Image($r('app.media.startIcon')) 327 .width(28) 328 } 329 .titleButton() 330 .onClick((event: ClickEvent) => { 331 router.back() 332 }) 333 334 // 分享按钮 335 Button() { 336 Image($r('app.media.startIcon')) 337 .width(28) 338 } 339 .titleButton() 340 .onClick((event: ClickEvent) => { 341 342 }) 343 } 344 .margin({ 345 top: 20, 346 left: 20, 347 right: 20 348 }) 349 } 350 .backgroundColor('#f1f3f5') 351 .width('100%') 352 } 353}
import { router } from '@kit.ArkUI'; import { findDataByGetApi, findDataByPostApi } from '../apis/ProductApi'; import { ParamsType } from '../utils/ParamsType'; import { Evaluate, GoodDetail } from '../viewModel/GoodDetailModel'; import { ProductDataModel } from '../viewModel/HomeModel'; import { JSON } from '@kit.ArkTS'; import { BreakPointConstants } from '../constants/BreakPointConstants'; import { BreakPointSystem } from '../utils/BreakPointSystem'; import { relationalStore } from '@kit.ArkData'; import { cardDBUtils } from '../utils/CardDBUtils'; @Extend(Button) function titleButton() { .backgroundColor('rgba(0,0,0,0.1)') .width(30) .height(30) .borderRadius(50) } @Entry({ routeName: 'detail' }) @Component struct Page03_Detail { @State message: string = 'Detail Page'; @State gid: string = 'aa' @State evaluate: Evaluate = { 'userId': '1', 'desc': '评论' } @StorageProp(BreakPointConstants.CURRENT_BREAKPOINT) currentBreakPoint: string = 'sm' @State goodDetail: GoodDetail = { id: '1', add_time: '', cat_id: '', cat_one_id: '', cat_two_id: '', cat_three_id: '', good_id: '1234', good_small_logo: ['app.media.bird', 'app.media.animal', 'app.media.bird', 'app.media.animal'], good_big_logo: 'app.media.bird', good_name: '宠物电视', good_number: '', good_price: '1000', good_weight: '', hot_number: '', is_promote: '', upd_time: '', evaluate: [this.evaluate] } @State swiperIndex: number = 0 private breakPointSystem = new BreakPointSystem() // 挂载完成后获取数据 aboutToAppear(): void { const params = router.getParams() console.log(JSON.stringify(params)) // 断言告诉编辑器, 明确知道params对象数据类型 this.gid = (params as ParamsType<string>).value this.fetchDetailData(this.gid) this.breakPointSystem.register() console.log(this.currentBreakPoint) } addCard = () => { const valueBucketDetail: relationalStore.ValuesBucket = { 'good_id': this.goodDetail.good_id, 'good_name': this.goodDetail.good_name, 'good_big_logo': this.goodDetail.good_big_logo, 'good_code': this.goodDetail.good_id, 'good_price': Number(this.goodDetail.good_price), 'good_count': 1, 'good_checked': 0 } cardDBUtils.insertCardDB('goodcard', valueBucketDetail) console.log('add card data success') } fetchDetailData = async (id: string) => { const param: ProductDataModel = new ProductDataModel() param.cat_id = '1' await findDataByPostApi<ProductDataModel, ProductDataModel>(6, param).then(res => { console.log('111') console.log(JSON.stringify(res)) console.log('222') }) } @Builder bottomMenu() { GridRow({ columns: { sm: 9, md: 10, lg: 12 } }) { GridCol({ span: { sm: 2, md: 3, lg: 3 } }) { this.imageAndText($r('app.media.startIcon'), '首页') } .width('100%') .height('100%') GridCol({ span: { sm: 2, md: 3, lg: 3 } }) { this.imageAndText($r('app.media.startIcon'), '购物车') } .width('100%') .height('100%') GridCol({ span: { sm: 5, md: 4, lg: 6 } }) { Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { Column() { Text('加入购物车') .fontSize(14) .fontColor(Color.White) .onClick(this.addCard) } .alignItems(HorizontalAlign.Center) .justifyContent(FlexAlign.Center) .width('50%') .height('100%') .backgroundColor(Color.Green) Column() { Text('立即购买') .fontSize(14) .fontColor(Color.White) } .alignItems(HorizontalAlign.Center) .justifyContent(FlexAlign.Center) .width('50%') .height('100%') .backgroundColor(Color.Orange) } .width('100%') .height(50) .backgroundColor('#f5f5f5') .margin({ top: 5 }) } .width('100%') .height('100%') .backgroundColor(Color.Orange) } } @Builder imageAndText(imageSrc: Resource, text: string) { Column() { Image(imageSrc) .width(22) Text(text) .fontSize(12) .fontColor('#99000000') .margin({ top: 4 }) } .justifyContent(FlexAlign.Center) .alignItems(HorizontalAlign.Center) .width('100%') .height('100%') } @Builder customSwiper(payload: string[]) { Column() { Stack({ alignContent: Alignment.BottomEnd }) { // 轮播图组件 Swiper() { ForEach(payload, (item: string, index: number) => { Flex({ justifyContent: FlexAlign.Center }) { Image($r(item)) .height('100%') .objectFit(ImageFit.Cover) } }, (item: string) => item) } .indicator(false) .width('100%') .height('100%') .onChange((index: number) => { this.swiperIndex = index }) // 构建指示器 Text(`${this.swiperIndex + 1}/${payload.length}`) .fontSize(12) .fontColor(Color.White) .textAlign(TextAlign.Center) .width(35) .lineHeight(18) .backgroundColor('#66000000') .borderRadius(9) .margin({ right: 16, bottom: 16 }) } .height(334) .width('100%') } .height(this.currentBreakPoint == BreakPointConstants.BREAKPOINT_LG ? '100%' : 334) .backgroundColor(Color.White) } @Styles boxCommonStyles(){ .backgroundColor(Color.White) .borderRadius(16) .padding({ left: 12, right: 12, top: 16, bottom: 16 }) .margin({ top: 12 }) .width('100%') } @Builder titleBar(detail: GoodDetail) { Flex({ direction: FlexDirection.Column }) { Text(`¥${this.goodDetail.good_price}`) .fontSize(20) .fontColor(Color.Brown) Text(detail.good_name) .fontSize(16) .fontColor(Color.Black) Row() { // 添加3个小图标 } } .height(100) .boxCommonStyles() } @Builder ChooseTypeBar() { Flex() { } .boxCommonStyles() .height(50) } @Builder ServiceBar() { Flex() { } .boxCommonStyles() .height(130) } @Builder UserEvaluateBar() { Flex() { Text('评论') } .boxCommonStyles() .height(120) } build() { Stack({ alignContent: Alignment.TopStart }) { // 内容区域 Flex({ direction: FlexDirection.Column }) { Scroll() { GridRow({ columns: { sm: 4, md: 8, lg: 12 }, gutter: 12 }) { // 存放轮播图 GridCol({ span: { sm: 4, md: 8, lg: 5 } }) { this.customSwiper(this.goodDetail.good_small_logo) } GridCol({ span: { sm: 4, md: 8, lg: 7 } }) { Column() { // 价格和标题 this.titleBar(this.goodDetail) // 规则模块 this.ChooseTypeBar() // 服务模块 this.ServiceBar() // 评论模块 this.UserEvaluateBar() // 商品展示图 } .width('100%') .padding({ left: 10, right: 10 }) } } } .width('100%') .flexGrow(1) // 底部导航 GridRow({ columns: { sm: 4, md: 8, lg: 12 }, gutter: 12 }) { GridCol({ span: { sm: 4, md: 6, lg: 6 }, offset: { md: 1, lg: 3 } }) { // 页面局部设计 this.bottomMenu(); } } .width('100%') .height(this.currentBreakPoint == BreakPointConstants.BREAKPOINT_LG ? 70 : 60) .backgroundColor(Color.Pink) } // 返回按钮 Flex({ justifyContent: FlexAlign.SpaceBetween }) { // 返回按钮 Button() { Image($r('app.media.startIcon')) .width(28) } .titleButton() .onClick((event: ClickEvent) => { router.back() }) // 分享按钮 Button() { Image($r('app.media.startIcon')) .width(28) } .titleButton() .onClick((event: ClickEvent) => { }) } .margin({ top: 20, left: 20, right: 20 }) } .backgroundColor('#f1f3f5') .width('100%') } }

1add card data success 2insert goodcard data success, rowId:[3]
add card data success insert goodcard data success, rowId:[3]

删除

 1import { cardDBUtils } from '../utils/CardDBUtils'  2  3@Entry  4@Component  5struct Page03_DeteleTest {  6 @State myId: number = 0  7  8 build() {  9 Column() { 10 TextInput({ 11 placeholder: '请输入删除id', 12 text: $$this.myId 13 }) 14 15 Button('删除').onClick((event: ClickEvent) => { 16 cardDBUtils.deleteById('goodcard', this.myId) 17 }) 18 } 19 } 20}
import { cardDBUtils } from '../utils/CardDBUtils' @Entry @Component struct Page03_DeteleTest { @State myId: number = 0 build() { Column() { TextInput({ placeholder: '请输入删除id', text: $$this.myId }) Button('删除').onClick((event: ClickEvent) => { cardDBUtils.deleteById('goodcard', this.myId) }) } } }

1delete data success, rows:[1]
delete data success, rows:[1]

修改

  1import { relationalStore } from "@kit.ArkData"   2import { BusinessError } from "@kit.BasicServicesKit"   3   4class CardDBUtils {   5 private rdbStore: relationalStore.RdbStore | null = null   6   7 /**   8 * 初始化数据库   9 *  10 * @param context  11 * @param tableName  12 */  13 initCardDB(context: Context, tableName: string) {  14 // 初始化配置  15 const STORE_CONFIG: relationalStore.StoreConfig = {  16 name: 'GoodMall.db', // 数据库名  17 securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别  18 //encrypt: false, // 数据库是否加密  19 //customDir:'customDir/subCustomDir'  20 }  21  22 // 建表SQL  23 const SQL_CREATE_TABLE = `create table if not exists ${tableName} (  24 id integer primary key autoincrement,  25 good_id text not null,  26 good_name text not null,  27 good_big_logo text,  28 good_code text,  29 good_price real,  30 good_count integer,  31 good_checked integer  32 )`  33  34 // 初始化数据库, 异步  35 relationalStore.getRdbStore(context, STORE_CONFIG, (err, store) => {  36 if (err) {  37 console.log(`get rdb failed, ${err.code}, ${err.message}`)  38 return  39 } else {  40 console.log(`get rdb success`)  41 this.rdbStore = store  42  43 // 创建数据表  44 store.executeSql(SQL_CREATE_TABLE, (err) => {  45 if (err) {  46 console.log(`create table ${tableName} failed, ${err.code}, ${err.message}`)  47 } else {  48 console.log(`create table ${tableName} success`)  49 }  50 })  51 }  52 })  53 }  54  55 insertCardDB(tableName: string, value: relationalStore.ValuesBucket) {  56 if (this.rdbStore != null) {  57 this.rdbStore.insert(tableName, value, (err: BusinessError, rowId: number) => {  58 if (err) {  59 console.log(`insert ${tableName} data failed, ${err.name}-${err.message}`)  60 return  61 } else {  62 console.log(`insert ${tableName} data success, rowId:[${rowId}]`)  63 }  64 })  65 }  66 }  67  68 deleteById(tableName: string, id: number) {  69 // 获取操作对象  70 let predicates = new relationalStore.RdbPredicates(tableName)  71 // 筛选条件, 选中数据  72 predicates.equalTo('id', id)  73 if (this.rdbStore != null) {  74 this.rdbStore.delete(predicates, (err: BusinessError, rows: number) => {  75 if (err) {  76 console.log(`delete data failed, ${err.name}-${err.message}`)  77 return  78 } else {  79 console.log(`delete data success, rows:[${rows}]`)  80 }  81 })  82 }  83 }  84  85 updateById(tableName: string, id: number, value: relationalStore.ValuesBucket) {  86 let predicates = new relationalStore.RdbPredicates(tableName)  87 // 筛选条件, 选中数据  88 predicates.equalTo('id', id)  89 if (this.rdbStore != null) {  90 this.rdbStore.update(value, predicates, (err: BusinessError, rows: number) => {  91 if (err) {  92 console.log(`update data failed, ${err.name}-${err.message}`)  93 return  94 } else {  95 console.log(`update data success, rows:[${rows}]`)  96 }  97 })  98 }  99 } 100 101 /** 102 * 103 * @param tableName 104 * @param column 投影列 105 */ 106 queryCardDB(tableName: string, column: Array<String>) { 107 108 } 109} 110 111const cardDBUtils = new CardDBUtils() 112 113export { cardDBUtils }
import { relationalStore } from "@kit.ArkData" import { BusinessError } from "@kit.BasicServicesKit" class CardDBUtils { private rdbStore: relationalStore.RdbStore | null = null /** * 初始化数据库 * * @param context * @param tableName */ initCardDB(context: Context, tableName: string) { // 初始化配置 const STORE_CONFIG: relationalStore.StoreConfig = { name: 'GoodMall.db', // 数据库名 securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别 //encrypt: false, // 数据库是否加密 //customDir:'customDir/subCustomDir' } // 建表SQL const SQL_CREATE_TABLE = `create table if not exists ${tableName} ( id integer primary key autoincrement, good_id text not null, good_name text not null, good_big_logo text, good_code text, good_price real, good_count integer, good_checked integer )` // 初始化数据库, 异步 relationalStore.getRdbStore(context, STORE_CONFIG, (err, store) => { if (err) { console.log(`get rdb failed, ${err.code}, ${err.message}`) return } else { console.log(`get rdb success`) this.rdbStore = store // 创建数据表 store.executeSql(SQL_CREATE_TABLE, (err) => { if (err) { console.log(`create table ${tableName} failed, ${err.code}, ${err.message}`) } else { console.log(`create table ${tableName} success`) } }) } }) } insertCardDB(tableName: string, value: relationalStore.ValuesBucket) { if (this.rdbStore != null) { this.rdbStore.insert(tableName, value, (err: BusinessError, rowId: number) => { if (err) { console.log(`insert ${tableName} data failed, ${err.name}-${err.message}`) return } else { console.log(`insert ${tableName} data success, rowId:[${rowId}]`) } }) } } deleteById(tableName: string, id: number) { // 获取操作对象 let predicates = new relationalStore.RdbPredicates(tableName) // 筛选条件, 选中数据 predicates.equalTo('id', id) if (this.rdbStore != null) { this.rdbStore.delete(predicates, (err: BusinessError, rows: number) => { if (err) { console.log(`delete data failed, ${err.name}-${err.message}`) return } else { console.log(`delete data success, rows:[${rows}]`) } }) } } updateById(tableName: string, id: number, value: relationalStore.ValuesBucket) { let predicates = new relationalStore.RdbPredicates(tableName) // 筛选条件, 选中数据 predicates.equalTo('id', id) if (this.rdbStore != null) { this.rdbStore.update(value, predicates, (err: BusinessError, rows: number) => { if (err) { console.log(`update data failed, ${err.name}-${err.message}`) return } else { console.log(`update data success, rows:[${rows}]`) } }) } } /** * * @param tableName * @param column 投影列 */ queryCardDB(tableName: string, column: Array<String>) { } } const cardDBUtils = new CardDBUtils() export { cardDBUtils }

1update data success, rows:[0]
update data success, rows:[0]

查询

await异步查询无效果,按钮点击查询有效果

 1 queryCardDB(tableName: string, column: Array<string>, id?: string) {  2 let predicates = new relationalStore.RdbPredicates(tableName)  3 // 筛选条件, 选中数据  4 if (id) {  5 predicates.equalTo('id', id)  6 }  7 let cards: CardModel[] = []  8  9 if (this.rdbStore != null) { 10 this.rdbStore.query(predicates, column, (err, resultSet) => { 11 if (err) { 12 console.log(`query data failed, ${err.name}-${err.message}`) 13 return 14 } else { 15 console.log(`query data success`) 16 } 17 // 判断数据集能否遍历 18 while (resultSet.goToNextRow()) { 19 let id = resultSet.getLong(resultSet.getColumnIndex('id')) 20 let good_name = resultSet.getString(resultSet.getColumnIndex('good_name')) 21 let good_big_logo = resultSet.getString(resultSet.getColumnIndex('good_big_logo')) 22 let good_count = resultSet.getLong(resultSet.getColumnIndex('good_count')) 23 let good_code = resultSet.getString(resultSet.getColumnIndex('good_code')) 24 let good_id = resultSet.getString(resultSet.getColumnIndex('good_id')) 25 let good_checked = resultSet.getLong(resultSet.getColumnIndex('good_checked')) 26 let good_price = resultSet.getDouble(resultSet.getColumnIndex('good_price')) 27 28 const cardModel: CardModel = new CardModel() 29 cardModel.id = id 30 cardModel.good_name = good_name 31 cardModel.good_big_logo = good_big_logo 32 cardModel.good_count = good_count 33 cardModel.good_code = good_code 34 cardModel.good_id = good_id 35 cardModel.good_checked = good_checked 36 cardModel.good_price = good_price 37 38 cards.push(cardModel) 39 } 40 console.log(JSON.stringify(cards)) 41 // 释放内存结果集 42 resultSet.close() 43 }) 44 } 45 return cards 46 } 47 48 /** 49 * 50 * @param tableName 51 * @param column 投影列 52 */ 53 async queryCardDB2(tableName: string, column: Array<string>, id?: string) { 54 let predicates = new relationalStore.RdbPredicates(tableName) 55 // 筛选条件, 选中数据 56 if (id) { 57 predicates.equalTo('id', id) 58 } 59 let cards: CardModel[] = [] 60 // 查询数据得到一个结果集 61 const resultSet = await (this.rdbStore as relationalStore.RdbStore).query(predicates, column) 62 63 // 判断数据集能否遍历 64 while (resultSet.goToNextRow()) { 65 let id = resultSet.getLong(resultSet.getColumnIndex('id')) 66 let good_name = resultSet.getString(resultSet.getColumnIndex('good_name')) 67 let good_big_logo = resultSet.getString(resultSet.getColumnIndex('good_big_logo')) 68 let good_count = resultSet.getLong(resultSet.getColumnIndex('good_count')) 69 let good_code = resultSet.getString(resultSet.getColumnIndex('good_code')) 70 let good_id = resultSet.getString(resultSet.getColumnIndex('good_id')) 71 let good_checked = resultSet.getLong(resultSet.getColumnIndex('good_checked')) 72 let good_price = resultSet.getDouble(resultSet.getColumnIndex('good_price')) 73 74 const cardModel: CardModel = new CardModel() 75 cardModel.id = id 76 cardModel.good_name = good_name 77 cardModel.good_big_logo = good_big_logo 78 cardModel.good_count = good_count 79 cardModel.good_code = good_code 80 cardModel.good_id = good_id 81 cardModel.good_checked = good_checked 82 cardModel.good_price = good_price 83 84 cards.push(cardModel) 85 } 86 console.log(JSON.stringify(cards)) 87 // 释放内存结果集 88 resultSet.close() 89 return cards 90 }
queryCardDB(tableName: string, column: Array<string>, id?: string) { let predicates = new relationalStore.RdbPredicates(tableName) // 筛选条件, 选中数据 if (id) { predicates.equalTo('id', id) } let cards: CardModel[] = [] if (this.rdbStore != null) { this.rdbStore.query(predicates, column, (err, resultSet) => { if (err) { console.log(`query data failed, ${err.name}-${err.message}`) return } else { console.log(`query data success`) } // 判断数据集能否遍历 while (resultSet.goToNextRow()) { let id = resultSet.getLong(resultSet.getColumnIndex('id')) let good_name = resultSet.getString(resultSet.getColumnIndex('good_name')) let good_big_logo = resultSet.getString(resultSet.getColumnIndex('good_big_logo')) let good_count = resultSet.getLong(resultSet.getColumnIndex('good_count')) let good_code = resultSet.getString(resultSet.getColumnIndex('good_code')) let good_id = resultSet.getString(resultSet.getColumnIndex('good_id')) let good_checked = resultSet.getLong(resultSet.getColumnIndex('good_checked')) let good_price = resultSet.getDouble(resultSet.getColumnIndex('good_price')) const cardModel: CardModel = new CardModel() cardModel.id = id cardModel.good_name = good_name cardModel.good_big_logo = good_big_logo cardModel.good_count = good_count cardModel.good_code = good_code cardModel.good_id = good_id cardModel.good_checked = good_checked cardModel.good_price = good_price cards.push(cardModel) } console.log(JSON.stringify(cards)) // 释放内存结果集 resultSet.close() }) } return cards } /** * * @param tableName * @param column 投影列 */ async queryCardDB2(tableName: string, column: Array<string>, id?: string) { let predicates = new relationalStore.RdbPredicates(tableName) // 筛选条件, 选中数据 if (id) { predicates.equalTo('id', id) } let cards: CardModel[] = [] // 查询数据得到一个结果集 const resultSet = await (this.rdbStore as relationalStore.RdbStore).query(predicates, column) // 判断数据集能否遍历 while (resultSet.goToNextRow()) { let id = resultSet.getLong(resultSet.getColumnIndex('id')) let good_name = resultSet.getString(resultSet.getColumnIndex('good_name')) let good_big_logo = resultSet.getString(resultSet.getColumnIndex('good_big_logo')) let good_count = resultSet.getLong(resultSet.getColumnIndex('good_count')) let good_code = resultSet.getString(resultSet.getColumnIndex('good_code')) let good_id = resultSet.getString(resultSet.getColumnIndex('good_id')) let good_checked = resultSet.getLong(resultSet.getColumnIndex('good_checked')) let good_price = resultSet.getDouble(resultSet.getColumnIndex('good_price')) const cardModel: CardModel = new CardModel() cardModel.id = id cardModel.good_name = good_name cardModel.good_big_logo = good_big_logo cardModel.good_count = good_count cardModel.good_code = good_code cardModel.good_id = good_id cardModel.good_checked = good_checked cardModel.good_price = good_price cards.push(cardModel) } console.log(JSON.stringify(cards)) // 释放内存结果集 resultSet.close() return cards }

1[{"id":1,"good_name":"宠物电视","good_big_logo":"app.media.bird","good_count":1,"good_code":"1234","good_id":"1234","good_checked":0,"good_price":1000}]
[{"id":1,"good_name":"宠物电视","good_big_logo":"app.media.bird","good_count":1,"good_code":"1234","good_id":"1234","good_checked":0,"good_price":1000}]

Powered By 可尔物语

浙ICP备11005866号-12