# RDBDemo **Repository Path**: cxshu/rdbdemo ## Basic Information - **Project Name**: RDBDemo - **Description**: 本示例演示了HarmonyOS 关系型数据库的增删改查 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-08 - **Last Updated**: 2021-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: HarmonyOS, rdb ## README # 数据库配置 ```java StoreConfig.Builder builder = new StoreConfig.Builder(); // 设置数据库名 builder.setName("tttt.db"); // 设置分布式设备上的数据库的同步模式 // MODE_OFF:不同步 // MODE_NORMAL: 介于FULL和EXTRA之间 // MODE_FULL: 完全同步 // MODE_EXTRA: 额外同步,当一个设备上的数据库新增了部分数据,就把新增的这部分拷贝到其他设备的数据库 builder.setSyncMode(StoreConfig.SyncMode.MODE_OFF); // 设置提交模式 // sqlite目录内包含了三个文件xxx.db、 xxx.db-shm、 xxx.db-wal // MODE_DELETE: 删除模式(默认),一般在事务开始时创建回滚日志,事务结束时删除回滚日志 // MODE_TRUNCATE: 截取模式 // MODE_PERSIST: 持久模式, 事物结束时不删除回滚日志,而是在日志文件头部覆写,把原来的日志覆盖掉. // 这样也可以达到删除文件同样的效果,却减少了反复创建删除回滚日志的磁盘开销。 // MODE_MEMORY: 内存模式,将回滚日志存储在内存而不是磁盘中,但因为在磁盘中没有用于恢复的文件 // 如果在事务中间发生奔溃或者掉电,那么整个数据库就有可能损坏。 // MODE_WAL: 预写日志,当数据库连接首次打开是,WAL文件就会被创建。 // 当最后一次数据库连接被正常关闭时,wal文件就会被删除。 // 如果最后一次数据库连接没有正常关闭,wal文件会保存下来,直到下一次打开数据库时才会自动删除。 // shm--共享内存文件 // 共享内存文件用于提供一块共享内存给多个进程在WAL模式中访问相同的数据库。 // MODE_OFF: 关闭日志,禁用SQLite原子提交和回滚功能(数据库只能查询,不能写) builder.setJournalMode(StoreConfig.JournalMode.MODE_WAL); // 数据库的存储模式 // MODE_MEMORY: 内存模式,数据库在内存中 // MODE_DISK: 磁盘模式,数据库放在磁盘上(默认) builder.setStorageMode(StoreConfig.StorageMode.MODE_DISK); // 数据库是否只读, true:只读, false:可读可写 builder.setReadOnly(false); // 数据库文件状态 // NORMAL: 数据库正常 // BACKUP: 是备份文件 // CORRUPT:表示数据库文件是损坏的 builder.setDatabaseFileType(DatabaseFileType.NORMAL); String keystr = "123456"; // 对数据库进行加密 builder.setEncryptKey(keystr.getBytes()); StoreConfig config = builder.build(); // 进入创建数据库的实质环节,重要的核心类 DatabaseHelper helper = new DatabaseHelper(this); // 进一步通过helper的方法,来获取到数据库对象,getRdbStore():如果数据库不存在,自动创建 // config:数据库配置信息 // version:我们使用的数据库的版本,整数 // openCallBack:创建数据库时被回调,可以在该方法中初始化表结构,并添加一些应用使用到的初始化数据 // resultSetHook(勾子):把要发送的信息勾住,然后进行各种处理,再发送出去 RdbStore rdbStore = helper.getRdbStore(config, 1, callback, null); ```