2

我的数据库在:android\app\src\main\assets\app.db

我尝试的方式:

  open() {
    SQLiteStorage.DEBUG(true);
    SQLiteStorage.openDatabase({
      name: 'file:///android_asset/app.db',
    })
      .then(() => {
        console.info('');
      })
      .catch(err => {
        console.warn(err);
      });
  }

但是错误:

图片

我怎样才能做到这一点?

4

2 回答 2

0

在 react-native-cli 中:

1-首先确保数据库存在于文档目录中很方便,使用 rn-fetch-blob 您可以列出目录中的文档,如下所示:

import RNFetchBlob from 'rn-fetch-blob';



let dirs = RNFetchBlob.fs.dirs;
const documentPath = dirs.DocumentDir;
const externalZipPath = dirs.DCIMDir;
      

RNFetchBlob.fs.ls (documentPath) .then ((files) => {
 console.log (files)
 })


如果您不执行此步骤,您可以设置正在创建和打开一个基本数据库,因为它没有找到任何具有该名称的数据库。

您也可以从 android studio打开数据库: 启动成功时:在设备文件资源管理器> data> data> com.nameofyourapp> databases 您也可以单击 android studio 'Database inspector' 的底部选项卡以查看真实的数据库更改时间。

2-一旦您确定该目录中已经存在数据库: 要在手机内部但项目外部的目录中打开数据库: “如果您的文件夹不在应用程序包中,而是在应用程序沙箱中,即从某个远程位置下载”

let openDbExample = () => {

    let errorCB = (err) => {
          console.log ("SQL Error:" + err);
        }
      
    let successCB = () => {
    db.transaction ((tx) => {
    tx.executeSql (
    `SELECT * FROM name_column_table LIMIT 10`, [], (tx, results) => {
    var len = results.rows.length;

            for (let i = 0; i <len; i ++) {
                let row = results.rows.item (i);
                console.log (row);
            }
        })
     })
    }

  if (Platform.OS === 'ios') {
  db = SQLite.openDatabase ({name: "example_data_base.db", location: 
  'Documents'}, successCB, errorCB);
  } 
  else {
  db = SQLite.openDatabase ({name: "example_data_base.db", readOnly: true, 
  location: "default", createFromLocation: 2}, successCB, errorCB)
  }
}
于 2021-07-20T03:10:57.177 回答
0

运行好!

 open() {
    SQLiteStorage.DEBUG(true);
    SQLiteStorage.openDatabase({
      name: 'app.db', // android/app/src/main/assets/app.db
    })
      .then(() => {
        console.info('');
      })
      .catch(err => {
        console.warn(err);
      });
  }
于 2020-06-07T06:28:13.433 回答