关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。
创建一个表并且向里面插入数据:
1、写数据库配置
2、写建表语言
3、执行建表语言
4、准备插入数据
5、插入数据
// 创建数据库
const STORE_CONFIG: relationalStore.StoreConfig = {
name: 'xxx.db',
securityLevel: relationalStore.SecurityLevel.S3, // 数据库安全级别
encrypt: false, // 是否加密,默认不加密
customDir: 'customDir/subCustomDir', // 可选参数,数据库自定义路径。数据库将在如下的目录结构中被创建:context.databaseDir + '/rdb/' + customDir,其中context.databaseDir是应用沙箱对应的路径,'/rdb/'表示创建的是关系型数据库,customDir表示自定义的路径。当此参数不填时,默认在本应用沙箱目录下创建RdbStore实例。
isReadOnly: false
};
// 判断数据库版本,如果不匹配则需进行升降级操作
// 假设当前数据库版本为3,表结构:xxxx
const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS xxx (' +
'数据库表字段1 INTEGER PRIMARY KEY AUTOINCREMENT, ' +
'数据库表字段2 TEXT NOT NULL,' +
'数据库表字段3 TEXT NOT NULL,' +
'数据库表字段4 INTEGER'
')'; // 建表Sql语句, IDENTITY为bigint类型,sql中指定类型为UNLIMITED INT
const promise: boolean = await new Promise((resolve: Function, reject: Function) => {
setTimeout(() => {
relationalStore.getRdbStore(getContext().getApplicationContext(), STORE_CONFIG, (err, store) => {
if (err) {
console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`);
return;
}
console.info('Succeeded in getting RdbStore.');
// 当数据库创建时,数据库默认版本为0
if (store.version === 0) {
store.executeSql(SQL_CREATE_TABLE); // 创建数据表
// 设置数据库的版本,入参为大于0的整数
store.version = 3;
}
// 如果数据库版本不为0且和当前数据库版本不匹配,需要进行升降级操作
// 当数据库存在并假定版本为1时,例应用从某一版本升级到当前版本,数据库需要从1版本升级到2版本
if (store.version === 1) {
// version = 1:表结构:EMPLOYEE (NAME, SALARY, CODES, ADDRESS) => version = 2:表结构:EMPLOYEE (NAME, AGE, SALARY, CODES, ADDRESS)
(store as relationalStore.RdbStore).executeSql('ALTER TABLE EMPLOYEE ADD COLUMN AGE INTEGER');
store.version = 2;
}
// 当数据库存在并假定版本为2时,例应用从某一版本升级到当前版本,数据库需要从2版本升级到3版本
if (store.version === 2) {
// version = 2:表结构:EMPLOYEE (NAME, AGE, SALARY, CODES, ADDRESS) => version = 3:表结构:EMPLOYEE (NAME, AGE, SALARY, CODES)
(store as relationalStore.RdbStore).executeSql('ALTER TABLE EMPLOYEE DROP COLUMN ADDRESS TEXT');
store.version = 3;
}
const name: relationalStore.ValuesBucket = {
'数据库表字段1': ,
'数据库表字段2': ,
'数据库表字段3': ,
'数据库表字段4':
};
if (store !== undefined) {
(store as relationalStore.RdbStore).insert('表的名字', name, (err: BusinessError, rowId: number) => {
if (err) {
console.error(`Failed to insert data. Code:${err.code}, message:${err.message}`);
return;
}
console.info(`Succeeded in inserting data. rowId:${rowId}`);
})
}
resolve(true);
});
}, 1000);