修改entry/src/main/ets/entryability目录下的EntryAbility.ts文件:
在
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
之后添加:
const config={
name:'person.db', //数据库文件名
SecurityLevel:relationalStore.SecurityLevel.S1
}
const sql='create table if not exists account(id int primary key,username varchar not null)'
relationalStore.getRdbStore(this.context,config,(err,rdbStore)=>{
if (err) {
console.log('连接失败')
}
console.log('连接成功')
rdbStore.executeSql(sql)
globalThis.rdbStore=rdbStore
})
在
import window from '@ohos.window';
之后添加(如果输入上边代码后没有自动添加的话):
import relationalStore from '@ohos.data.relationalStore'; import securityLabel from '@ohos.file.securityLabel';
修改entry/src/main/ets/pages路径下的index.ets文件:
import relationalStore from '@ohos.data.relationalStore'
@Entry
@Component
struct Index {
@State message: string = 'Hello World'
rdbStore:relationalStore.RdbStore=globalThis.rdbStore
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Text('增加')
.onClick(()=>{
// insert into account values(1,'zhangsan')
let data={id:1,username:'zhangsan'}
this.rdbStore.insert('account',data,(err,rowId)=>{
if (err) {
console.log('添加失败')
}
console.log(rowId.toString()+'添加成功')
})
})
Text('增加') //第二条数据,可直接复制上边增加的代码
.onClick(()=>{
// insert into account values(2,'wangwu')
let data={id:2,username:'wangwu'}
this.rdbStore.insert('account',data,(err,rowId)=>{
if (err) {
console.log('添加失败')
}
console.log(rowId.toString()+'添加成功')
})
})
Text('更新')
.onClick(()=>{
//update account set username='lisi' where id=1
let predicates=new relationalStore.RdbPredicates('account')
predicates.equalTo('id',1)
let data={username:'lisi'}
this.rdbStore.update(data,predicates,(err,rows)=>{
if (err) {
console.log('sql语句错误,更新失败')
}
// rows输出值为0,说明没有更新;row为1,说明已更新
console.log(rows.toString()+'更新成功')
})
})
Text('删除')
.onClick(()=>{
//delete from account where id=1
let predicates=new relationalStore.RdbPredicates('account')
predicates.equalTo('id',1)
this.rdbStore.delete(predicates,(err,rows)=>{
if (err) {
console.log('sql语句错误,删除失败')
}
console.log(rows.toString()+'删除成功')
})
})
Text('获取')
.onClick(()=>{
//select id,username from account where id=1
let predicates=new relationalStore.RdbPredicates('account')
// predicates.equalTo('id',1) //查询多条时注释掉
this.rdbStore.query(predicates,['id','username'],(err,resultSet)=>{
//resultSet.isAtLastRow方法 用于判断是不是箭头在最后一行,如果在最后一行返回true,否则返回false
if (!resultSet.isAtLastRow) {
resultSet.goToNextRow() //将箭头指针指向下一行
//getColumnIndex 是获取指针指向那一行的哪个字段,getLong是获取字段相应的数据类型
console.log(resultSet.getLong(resultSet.getColumnIndex('id')).toString()+'获取成功')
console.log(resultSet.getString(resultSet.getColumnIndex('username'))+'获取成功')
}
})
})
}
.width('100%')
}
.height('100%')
}
}
实际效果图:
