Как открыть базу данных SQLite из DocumentPicker в React Native с помощью Expo - PullRequest
0 голосов
/ 25 октября 2019

Я хотел бы открыть существующий файл базы данных SQLite внутри Expo-SQLite. Файл находится, скажем, где-то на устройстве (например, в папке «Документы»), чтобы пользователь мог открыть его с помощью DocumentPicker. У меня проблемы с получением файла, выбранного из DocumentPicker, в SQLite:

import * as DocumentPicker from 'expo-document-picker'
import * as SQLite from 'expo-sqlite'

openFile = () => {
    const res = DocumentPicker.getDocumentAsync().then(result => {
            let db = SQLite.openDatabase(result.uri)
            console.log(db) //logs null
        })
}

Я могу заверить, что SQLite работает во время работы внутри, поскольку

let db = SQLite.openDatabase('test.db')

, давайте мне запросить SQLзапросы на db.

РЕДАКТИРОВАТЬ:

import * as FileSystem from 'expo-file-system'; 

        openFile = async() => {
        const localdb = `${FileSystem.documentDirectory}$mylocal.db`;
        const result = await DocumentPicker.getDocumentAsync();
        const copyResult = await FileSystem.copyAsync({from: result.uri,
                to: localdb 
            });

       let db = SQLite.openDatabase(localdb);
       console.log(db);
}

, казалось, чтобы открыть файл базы данных. Однако

await db.transaction((txn) => {
 txn.executeSql('SELECT * FROM Record', [],
 (txn, rs) => console.log(rs.rows),
 (error) => console.log(error)) })

ничего не выводит .. Я проверил файл базы данных в браузере БД на наличие SQLite, и все выглядит нормально с самим файлом ..

1 Ответ

0 голосов
/ 26 октября 2019

Обновлено:

Попробуйте с Expo Snack: при открытии БД обратите внимание на скопированный путь:

 let db = SQLite.openDatabase('sample1.db');

https://snack.expo.io/r1Tvwkm5S

...