建表语句返回的就是null这个结果,插入数据的sql返回的数字的话就是插入成功了,使用下面的demo查看插入表中的数据是否存在:
querysql(){
const STORE_CONFIG :relationalStore.StoreConfig= {
name: 'cxt_question.db', // 数据库文件名
securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别
encrypt: false, // 可选参数,指定数据库是否加密,默认不加密
// customDir: this._fileName + '/db', // 可选参数,数据库自定义路径。数据库将在如下的目录结构中被创建:context.databaseDir + '/rdb/' + customDir,其中context.databaseDir是应用沙箱对应的路径,'/rdb/'表示创建的是关系型数据库,customDir表示自定义的路径。当此参数不填时,默认在本应用沙箱目录下创建RdbStore实例。
isReadOnly: false // 可选参数,指定数据库是否以只读方式打开。该参数默认为false,表示数据库可读可写。该参数为true时,只允许从数据库读取数据,不允许对数据库进行写操作,否则会返回错误码801。
};
relationalStore.getRdbStore(getContext(), STORE_CONFIG).then(async (rdbStore: relationalStore.RdbStore) => {
console.info('Get RdbStore successfully.')
rdbStore.beginTransaction();
let sqlStr = 'SELECT * FROM `cxt_question`'
let resultSet = rdbStore.querySqlSync(sqlStr)
while (resultSet.goToNextRow()) {
const id = resultSet.getLong(resultSet.getColumnIndex("question_id"));
const name = resultSet.getString(resultSet.getColumnIndex("title"));
console.info(`id=${id}, name=${name}`);
}
// 释放数据集的内存,若不释放可能会引起fd泄露与内存泄露
resultSet.close();
rdbStore.commit()
console.log('成功')
})
}
resultSet没有直接转对象的原生方法,因为数据库的字段名称和对象的属性不一致,所以这个需要自行实现