在HarmonyOS开发中relationalStore 获取数据库能成功,但是创建表格的时候报错了?

在HarmonyOS开发中relationalStore 获取数据库能成功,但是创建表格的时候报错了?

创建表格的代码
createHomeAppTypeSql = 'CREATE TABLE IF NOT EXISTS HOMEAPPTYPE(ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,NAME TEXT,TYPE TEXT, LISTIDS TEXT)';

async createHomeAppTypeTable(){ 
  relationalStore.getRdbStore(getContext(), this.STORE_CONFIG, (err, store) => { 
    if (err) { 
      
      return; 
    } 
 
    // 当数据库创建时,数据库默认版本为0 
    if (store.version === 0) { 
      store.executeSql(this.createHomeAppTypeSql,(error:BusinessError)=>{ 
        if(error){ 
          
          return 
        } 
 
      }); // 创建数据表 
      // 设置数据库的版本,入参为大于0的整数 
      // store.version = 3; 
    } 
  });

输出日志:Succeeded in getting iCE_DB.=======create table error:14800000;error menssage:Inner error. Inner code is -1

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

阅读 547
1 个回答

你可以参考以下代码示例:

rdbStore?: relationalStore.RdbStore; 
private context: Context = getContext(this) as common.UIAbilityContext; 
dataSet?: relationalStore.ResultSet; 
dbSet: Array<ShoppingCartSourceObject> = []; 
 
MyGetRdbStore() { 
  interface StoreConfig 
  { 
    name: string; 
    securityLevel: relationalStore.SecurityLevel; 
  } 
 
  const STORE_CONFIG: relationalStore.StoreConfig = { 
    name: 'ShoppingCart.db', // 数据库文件名 
    securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别 
    encrypt: true // 可选参数,指定数据库是否加密,默认不加密 
    //dataGroupId: 'dataGroupID' // 可选参数,仅可在Stage模型下使用,表示为应用组ID,需要向应用市场获取。指定在此Id对应的沙箱路径下创建实例,当此参数不填时,默认在本应用沙箱目录下创建。 
  }; 
 
  relationalStore.getRdbStore(this.context, STORE_CONFIG, (err, store) => { 
    if (err) { 
      console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`); 
      return; 
    } 
    else { 
      console.info(`Succeeded in getting RdbStore.`); 
    } 
    this.rdbStore = store; 
    this.CreateTable() 
  }) 
} 
 
CreateTable() { 
  const SQL_CREATE_TABLE = 
    'CREATE TABLE IF NOT EXISTS SHOPPINGCART (ID INTEGER PRIMARY KEY AUTOINCREMENT,TITLE TEXT NOT NULL, DETAIL TEXT NOT NULL, IMAGEID INTEGER, PRICE INTEGER, COUNT INTEGER)'; 
  if (this.rdbStore != undefined) { 
    this.rdbStore.executeSql(SQL_CREATE_TABLE); 
    console.log("建表成功") 
  }

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进