中国优质的IT技术网站
专业IT技术创作平台
IT职业在线教育平台
如何升级关系型数据库版本?
微信扫码分享
import { relationalStore } from '@kit.ArkData'; import { common } from '@kit.AbilityKit'; let store: relationalStore.RdbStore | undefined = undefined; const STORE_CONFIG :relationalStore.StoreConfig= { name: 'Mydb.db', // 数据库文件名 securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别 encrypt: false, // 可选参数,指定数据库是否加密,默认不加密 customDir: 'customDir/subCustomDir' // 可选参数,数据库自定义路径。数据库将在如下的目录结构中被创建:context.databaseDir + '/rdb/' + customDir,其中context.databaseDir是应用沙箱对应的路径,'/rdb/'表示创建的是关系型数据库,customDir表示自定义的路径。当此参数不填时,默认在本应用沙箱目录下创建RdbStore实例。 }; @Entry @Component struct Index { context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext SQL_CREATE_TABLE:string = 'CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INTEGER, SALARY REAL, CODES BLOB)'; // 建表Sql语句 build() { Column() { Button("升级数据库版本").onClick(() => { relationalStore.getRdbStore(this.context, STORE_CONFIG, (err, store) => { if (err) { console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`); return; } // 如果数据库版本不为0且和当前数据库版本不匹配,需要进行升降级操作 // 当数据库存在并假定版本为1时,例应用从某一版本升级到当前版本,数据库需要从1版本升级到2版本 if (store.version === 1) { // version = 1:表结构:EMPLOYEE (NAME, SALARY, CODES, ADDRESS) => version = 2:表结构:EMPLOYEE (NAME, AGE, SALARY, CODES, ADDRESS) if (store !== undefined) { (store as relationalStore.RdbStore).executeSql('ALTER TABLE EMPLOYEE ADD COLUMN AGE INTEGER'); store.version = 2; } } }) }) } .width('100%') .height('100%') .justifyContent(FlexAlign.Center) } }