首页 > 解决方案 > 为什么我的 SQLite 数据库文件没有显示任何数据?

问题描述

目标 -

我正在尝试使用 React native 存储来自地理位置 API 的经度和纬度数据。我创建了一个.db文件,将其放入/assets/android中的文件夹中。首先,我试图插入或检索任何类型的数据,而不是位置数据。错误 -

它表明Test当我尝试console.log()它时没有命名表。

问题 -

每当我尝试将数据插入数据库时​​,我都看不到添加了任何新数据,而且当我尝试读取已经填充的数据库时,我什么也看不到。我哪里错了?我对此很陌生。

  1. 返回的响应是什么SQL transaction。我console.log知道但无法理解。

  2. 应该在哪里transaction function be located?

我正在为 SQLite OS 使用 DBbrowser - MacOS

代码 -

I am using this function to send or receive data.

sendData = () => {
        // var SQLite = require('react-native-sqlite-storage')
        var db = SQLite.openDatabase({name: 'a', createFromLocation : "~test.sqlite"}, this.openCB, this.errorCB); 
        db.transaction(txn => {
        txn.executeSql(
        //   "INSERT INTO Test (latitude,longitude) VALUES(?,?)",
        'SELECT * FROM Test',
          [],      //Argument to pass for the prepared statement
          (res) => {
            // let row = res.rows.(1);
            console.log(res);
          }   //Callback function to handle the result response
        );
      }); 
    };

// I mapped this button to send data.

<TouchableOpacity onPress={this.sendData} style={styles.button}>
<Text> SEND DATA</Text
</TouchableOpacity>

标签: androiddatabasesqlitereact-native

解决方案


您将无法修改存储在 assets 文件夹中的数据库。典型的方法是在尝试打开数据库插入记录之前,首先检查数据库是否存在于您的应用程序数据文件夹中(不确定 React 是否具有相同的文件夹结构)。如果数据文件夹中不存在数据库,则将干净的数据库从资产复制到数据文件夹,然后从数据文件夹中打开数据库。只要应用程序没有从设备上删除,数据文件夹中的数据库以及您插入其中的所有数据都会保留。删除并重新安装应用程序后,必须再次从资产中复制数据库,并且数据库将是干净的,其中没有新数据。

我不知道相同的数据文件夹结构是否适用于 React,但在原生 Android 中我使用:

 "/data/data/com.mycompany.myapp/databases/"

或者

DB_PATH = myContext.getFilesDir().getParentFile().getPath() + "/databases/";

推荐阅读