提交 858f230d 编写于 作者: L leiiyb

add database upGrade code cases

Signed-off-by: Nleiiyb <leiyanbo@huawei.com>
上级 cbf9948a
...@@ -237,7 +237,50 @@ ...@@ -237,7 +237,50 @@
}) })
``` ```
2. 插入数据。 2. 数据库升级:
```js
import data_relationalStore from '@ohos.data.relationalStore'
import application_Ability from '@ohos.application.Ability'
const STORE_CONFIG = {
name: "upGrade.db",
securityLevel: data_relationalStore.SecurityLevel.S1
}
// 获取context
let context = null
class MainAbility extends application_Ability {
onWindowStageCreate(windowStage) {
context = this.context
}
}
// 假设当前数据库版本为3
data_relationalStore.getRdbStore(context, STORE_CONFIG, function (err, store) {
// 当数据库创建时,数据库默认版本为0
if (store.version == 0) {
store.executeSql("CREATE TABLE IF NOT EXISTS student (id INTEGER PRIMARY KEY AUTOINCREMENT, score REAL);", null)
// 设置数据库的版本,入参为大于0的整数
store.version = 3
}
// 当数据库存在并假定版本为1时,例应用从某一版本升级到当前版本,数据库需要从1版本升级到2版本
if (store.version != 3 && store.version == 1) {
// version = 1:表结构:student (id, age) => version = 2:表结构:student (id, age, score)
store.executeSql("ALTER TABLE student ADD COLUMN score REAL", null)
store.version = 2
}
// 当数据库存在并假定版本为2时,例应用从某一版本升级到当前版本,数据库需要从2版本升级到3版本
if (store.version != 3 && store.version == 2) {
// version = 2:表结构:student (id, age, score) => version = 3:表结构:student (id, score)
store.executeSql("ALTER TABLE student DROP COLUMN age INTEGER", null)
store.version = 3
}
})
3. 插入数据。
(1) 构造要插入的数据,以ValuesBucket形式存储。 (1) 构造要插入的数据,以ValuesBucket形式存储。
...@@ -266,7 +309,7 @@ ...@@ -266,7 +309,7 @@
} }
``` ```
3. 查询数据。 4. 查询数据。
(1) 构造用于查询的谓词对象,设置查询条件。 (1) 构造用于查询的谓词对象,设置查询条件。
...@@ -291,7 +334,7 @@ ...@@ -291,7 +334,7 @@
}) })
``` ```
4. 设置分布式同步表。 5. 设置分布式同步表。
(1) 权限配置文件中增加以下配置。 (1) 权限配置文件中增加以下配置。
...@@ -323,7 +366,7 @@ ...@@ -323,7 +366,7 @@
}) })
``` ```
5. 分布式数据同步。 6. 分布式数据同步。
(1) 构造用于同步分布式表的谓词对象,指定组网内的远程设备。 (1) 构造用于同步分布式表的谓词对象,指定组网内的远程设备。
...@@ -347,7 +390,7 @@ ...@@ -347,7 +390,7 @@
}) })
``` ```
6. 分布式数据订阅。 7. 分布式数据订阅。
(1) 调用分布式数据订阅接口,注册数据库的观察者。 (1) 调用分布式数据订阅接口,注册数据库的观察者。
...@@ -369,7 +412,7 @@ ...@@ -369,7 +412,7 @@
} }
``` ```
7. 跨设备查询。 8. 跨设备查询。
(1) 根据本地表名获取指定远程设备的分布式表名。 (1) 根据本地表名获取指定远程设备的分布式表名。
...@@ -382,8 +425,7 @@ ...@@ -382,8 +425,7 @@
let resultSet = rdbStore.querySql("SELECT * FROM " + tableName) let resultSet = rdbStore.querySql("SELECT * FROM " + tableName)
``` ```
8. 远程查询。 9. 远程查询。
(1) 构造用于查询分布式表的谓词对象,指定组网内的远程分布式表名和设备。 (1) 构造用于查询分布式表的谓词对象,指定组网内的远程分布式表名和设备。
...@@ -408,7 +450,7 @@ ...@@ -408,7 +450,7 @@
}) })
``` ```
9. 数据库的备份和恢复。 10. 数据库的备份和恢复。
(1) 调用数据库的备份接口,备份当前数据库文件。 (1) 调用数据库的备份接口,备份当前数据库文件。
...@@ -422,6 +464,7 @@ ...@@ -422,6 +464,7 @@
console.info('Backup failed, err: ' + err) console.info('Backup failed, err: ' + err)
}) })
``` ```
(2) 调用数据库的恢复接口,从数据库的备份文件恢复数据库文件。 (2) 调用数据库的恢复接口,从数据库的备份文件恢复数据库文件。
示例代码如下: 示例代码如下:
......
...@@ -57,18 +57,15 @@ const STORE_CONFIG = { ...@@ -57,18 +57,15 @@ const STORE_CONFIG = {
name: "RdbTest.db", name: "RdbTest.db",
securityLevel: data_rdb.SecurityLevel.S1 securityLevel: data_rdb.SecurityLevel.S1
} }
data_rdb.getRdbStore(context, STORE_CONFIG, function (err, rdbStore) { data_rdb.getRdbStore(context, STORE_CONFIG, function (err, store) {
if (err) { if (err) {
console.info("Get RdbStore failed, err: " + err) console.info("Get RdbStore failed, err: " + err)
return return
} }
if (rdbStore.openStatus == data_rdb.OpenStatus.ON_CREATA) { // 设置数据库版本应为大于0的正整数
console.log("RdbStore status is ON_CREATA") store.version = 3
} else if (rdbStore.openStatus == data_rdb.OpenStatus.ON_OPEN) { let version = store.version
console.log("RdbStore status is ON_OPEN") console.log("Get RdbStore version is " + version)
} else {
return
}
console.log("Get RdbStore successfully.") console.log("Get RdbStore successfully.")
}) })
``` ```
...@@ -90,18 +87,15 @@ const STORE_CONFIG = { ...@@ -90,18 +87,15 @@ const STORE_CONFIG = {
name: "RdbTest.db", name: "RdbTest.db",
securityLevel: data_rdb.SecurityLevel.S1 securityLevel: data_rdb.SecurityLevel.S1
} }
data_rdb.getRdbStore(context, STORE_CONFIG, function (err, rdbStore) { data_rdb.getRdbStore(context, STORE_CONFIG, function (err, store) {
if (err) { if (err) {
console.info("Get RdbStore failed, err: " + err) console.info("Get RdbStore failed, err: " + err)
return return
} }
if (rdbStore.openStatus == data_rdb.OpenStatus.ON_CREATA) { // 设置数据库版本应为大于0的正整数
console.log("RdbStore status is ON_CREATA") store.version = 3
} else if (rdbStore.openStatus == data_rdb.OpenStatus.ON_OPEN) { let version = store.version
console.log("RdbStore status is ON_OPEN") console.log("Get RdbStore version is " + version)
} else {
return
}
console.log("Get RdbStore successfully.") console.log("Get RdbStore successfully.")
}) })
``` ```
...@@ -151,14 +145,11 @@ const STORE_CONFIG = { ...@@ -151,14 +145,11 @@ const STORE_CONFIG = {
securityLevel: data_rdb.SecurityLevel.S1 securityLevel: data_rdb.SecurityLevel.S1
} }
let promise = data_rdb.getRdbStore(context, STORE_CONFIG); let promise = data_rdb.getRdbStore(context, STORE_CONFIG);
promise.then(async (rdbStore) => { promise.then(async (store) => {
if (rdbStore.openStatus == data_rdb.OpenStatus.ON_CREATA) { // 设置数据库版本应为大于0的正整数
console.log("RdbStore status is ON_CREATA") store.version = 3
} else if (rdbStore.openStatus == data_rdb.OpenStatus.ON_OPEN) { let version = store.version
console.log("RdbStore status is ON_OPEN") console.log("Get RdbStore version is " + version)
} else {
return
}
console.log("Get RdbStore successfully.") console.log("Get RdbStore successfully.")
}).catch((err) => { }).catch((err) => {
console.log("Get RdbStore failed, err: " + err) console.log("Get RdbStore failed, err: " + err)
...@@ -183,14 +174,11 @@ const STORE_CONFIG = { ...@@ -183,14 +174,11 @@ const STORE_CONFIG = {
securityLevel: data_rdb.SecurityLevel.S1 securityLevel: data_rdb.SecurityLevel.S1
} }
let promise = data_rdb.getRdbStore(context, STORE_CONFIG); let promise = data_rdb.getRdbStore(context, STORE_CONFIG);
promise.then(async (rdbStore) => { promise.then(async (store) => {
if (rdbStore.openStatus == data_rdb.OpenStatus.ON_CREATA) { // 设置数据库版本应为大于0的正整数
console.log("RdbStore status is ON_CREATA") store.version = 3
} else if (rdbStore.openStatus == data_rdb.OpenStatus.ON_OPEN) { let version = store.version
console.log("RdbStore status is ON_OPEN") console.log("Get RdbStore version is " + version)
} else {
return
}
console.log("Get RdbStore successfully.") console.log("Get RdbStore successfully.")
}).catch((err) => { }).catch((err) => {
console.log("Get RdbStore failed, err: " + err) console.log("Get RdbStore failed, err: " + err)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册