EXPO-SQLite不会将数据插入到Reaction本机中

xa9qqrwz  于 2022-11-14  发布在  SQLite
关注(0)|答案(1)|浏览(143)

我在Reaction Native中创建了一个将数据保存到数据库程序,但当重新打开EXPO并再次运行时,程序数据库被删除,并创建了新的空数据库

async save() {
          
   if (!(await FileSystem.getInfoAsync(FileSystem.documentDirectory + 'SQLite')).exists) {
       await FileSystem.makeDirectoryAsync(FileSystem.documentDirectory + 'SQLite');
                         
   }
   await FileSystem.downloadAsync(
       Asset.fromModule(require('../assets/factor.db')).uri,
       FileSystem.documentDirectory + 'SQLite/factor.db'
   );
   const db = SQLite.openDatabase('factor.db');
       
   db.transaction((tx) => {
   tx.executeSql("INSERT INTO factors (created_at,customer,sender,pay,off,description,customer_id) 
   values(?,?,?,?,?,?,1)",
   [this.state.date, this.state.customer, this.state.sender, this.state.payment, this.state.offset, 
   this.state.description],
   (trans, rows) => {
        alert('factor added');
        console.log(rows);

        db._db.close();
                            
   },
  (err, msg) => {
       console.log(msg);
  });
  tx.executeSql(
    "SELECT * FROM factors",
    [],
    (trans, res) => {
    console.log(res.rows);

    db._db.close();
                            
  },
  (err, msg) => {
      console.log(msg);
  });
 }, null);
                  

      
}

在运行之后,选择SQL返回一行,并且不显示之前添加的前一行

sg24os4d

sg24os4d1#

因为我上周遇到了这个问题,我花了一段时间才找到答案。在我的设备上运行EXPO时,数据库更改是对设备上的本地数据库进行的,而不是作为我的代码中的资产包含的预填充或空白数据库。在不重新运行“EXPO Start”的情况下重新加载应用程序将保留设备上的数据库,但停止服务器并重新运行“EXPO Start”将启动一个新的应用程序版本,该版本将覆盖在以前的示例中所做的任何更改。

相关问题