回复
操作关系型数据库RDB 原创
whaaaat
发布于 2024-4-22 16:42
浏览
1收藏
本篇写了建立数据库,初始化,上传数据到鸿蒙关系型数据库RDB的过程。
1).导入模块@ohos.data.relationalStore
import relationalStore from '@ohos.data.relationalStore'
2).创建数据库
这里用一个工具类DataBaseUtil去创建并初始化数据库
export default class DatabaseUtil {
/**
* 关系型数据库
*/
public static dbs: relationalStore.RdbStore;
/**
* 键值型数据库管理器
*/
public static KVDBManager: distributedKVStore.KVManager;
/**
* 初始化数据库dbs
*/
public static init(context) {
this.initDBS(context);
this.initKVDBManager(context);
}
/**
\* 初始化键值型数据库
* @param context
*/
public static initKVDBManager(context) {
const kvManagerConfig = {
context: context,
bundleName: 'com.example.datamanagertest'
};
try {
// 创建KVManager实例
this.KVDBManager = distributedKVStore.createKVManager(kvManagerConfig);
console.info('Succeeded in creating KVManager.');
// 继续创建获取数据库
} catch (e) {
console.error(`Failed to create KVManager. Code:${e.code},message:${e.message}`);
}
}
/**
* 初始化关系型数据库。
* @param context
*/
private static initDBS(context) {
const STORE_CONFIG = {
name: 'RdbStore.db', // 数据库名
securityLevel: relationalStore.SecurityLevel.S1 // 数据库安全级别
};
relationalStore.getRdbStore(context, 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.`);
store.executeSql(PRODUCT_SQL_CREATE); // 创建数据表 product
store.executeSql(STORE_SQL_CREATE); // 创建数据表 store
store.executeSql(ORDERGOODS_SQL_CREATE); // 创建数据表 orderGoods
store.executeSql(TABLEORDER_SQL_CREATE); // 创建数据表 order
this.dbs = store;
});
}
}
数据库创建时机:
EntryAbility的onWindowStageCreate方法中初始化数据库。
DatabaseUtil.init(this.context)
3).创建需要用到的表
建表语句作为常量放在contants文件夹的TableConst中
//商品表product
export const PRODUCT_SQL_CREATE = 'CREATE TABLE IF NOT EXISTS PRODUCT (' +
'PRODUCTID INTEGER PRIMARY KEY , ' + //商品ID,有AUTOINCREMENT关键字时无法实现自增。
'PRODUCTNAME TEXT NOT NULL, ' + //品名
'PRODUCTPRICE REAL, ' + //单价
'PRODUCTUNIT TEXT, '+ //单位
'STOREID INTEGER, '+ //单位
'CREATEDTIME TEXT, ' + //首次创建时间
'UPDATETIME TEXT)'; //最后更新时间
这些语句在DataBaseUtil中被调用继而创建表格。调用代码:
store.executeSql(PRODUCT_SQL_CREATE); // 创建数据表 product
store.executeSql(STORE_SQL_CREATE); // 创建数据表 store
store.executeSql(ORDERGOODS_SQL_CREATE); // 创建数据表 orderGoods
store.executeSql(TABLEORDER_SQL_CREATE); // 创建数据表 order
4).实现表格的增删改查操作
例如:STROE表格的新增功能:
public insert(store: Store) {
const valueBucket = {
'STOREID': store.storeId,
};
DatabaseUtil.dbs.insert('STORE', valueBucket, (err, rowId) => {
if (err) {
console.error(`Failed to insert data. Code:${err.code}, message:${err.message}`);
return;
}
console.info(`Succeeded in inserting data. rowId:${rowId}`);
})
}
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
标签
赞
1
收藏 1
回复
相关推荐