无法打开数据库- SQLite React Native

zxlwwiss  于 2023-08-06  发布在  SQLite
关注(0)|答案(1)|浏览(128)

我有一个React Native应用程序,它可以打开与本地数据库的连接。数据库位于assets/www文件夹中,名为OA-DB.db。这是打开数据库连接的常量:

const db = openDatabase({  name: 'OA-DB.db',  createFromLocation: 1,}, () => console.log('Connected'), (error) => console.log('Error:' + error));

字符串
此连接在Android 11,Android 13,Android 14设备上运行良好。除了一个特定的设备Android平板电脑与Android 13和三星一个UI 5.1,返回错误,而试图打开连接:错误:无法打开数据库。我尝试了很多方法,将createFromLocation更改为1,禁用了工作帐户,因为打开工作帐户后,它不允许在Android Studio上查看文件。所以现在我可以看到Android Studio的安装文件夹和文件,我可以看到数据库文件夹和其中的数据库文件。有没有人能给予我一些指导?

更新

我已经尝试了更多的东西,我敢肯定数据库是目前在文件夹中,数据库的名称是正确的连接,所以表明该文件是正确的捆绑与应用程序在安装过程中.我在许多设备上安装了这个应用程序,但错误只发生在这个特定的。

更新2

现在我尝试了另一种方法,将数据库复制到设备内的另一个文件夹,使用react-native-fs,我能够将数据库复制到其他文件夹,但仍然无法连接此设备上的数据库。
复制数据库的函数

async function copyDatabaseIfNeeded(){
  const dbPath = '/storage/emulated/0/Documents/'+`${dbName}`;
  console.log('dbPath:'+dbPath);
  console.log('dbLocation:'+dbLocation);
  const dbExists = await RNFS.exists(dbPath);
  if (!dbExists) {
    try {
      // Check if external storage permission is granted (only for Android)
      if (Platform.OS === 'android') {
        const granted = await requestExternalStoragePermission();
        if (!granted) {
          console.error('Storage permission not granted.');
          return;
        }
      }
      // Construct the correct source path for the asset
      const sourcePath = Platform.OS === 'android' ? 'www/onlineaudits_new.db' : dbName;      
      await RNFS.copyFileAssets(sourcePath, dbPath);
      console.log('Database copied successfully');
    } catch (error) {
      console.error('Error copying database:', error);
    }
  }
}

打开连接的功能

// Open the database connection
function openDatabase() {
  return new Promise((resolve, reject) => {
    SQLite.openDatabase(
      { name: dbName, location: dbLocation },
      (db) => {
        console.log('Database connection opened successfully');
        resolve(db);
      },
      (error) => {
        console.error('Error opening database:', error + dbLocation);
        reject(error);
      }
    );
  });
}

zsohkypk

zsohkypk1#

您是否尝试过使用另一个库来连接数据库?

相关问题