J'ai besoin d'ouvrir la base de données cryptée pré-utilisateur en utilisant react-native-sqlite-storage
(modifié par dryganet: https://github.com/dryganets/react-native-sqlite-storage/tree/sergeyd/sqlite-cipher), cette base de données pré-remplies est téléchargée à partir de l'emplacement distant en utilisant react-native-fs
.Télécharger et utiliser la base de données SQLite sur React-Native Application
A ce moment où je mets la base de données dans des actifs dossier (cette base de données est copié lors de la commande react-native run-android
) et la méthode de feu « OpenDatabase »:
const dbName = "myDatabase.db";
const dbLocation = "~database.db";
const encryptionLey = "asdfghasdfgh";
const queryDatabase = async (tx) => {
const [sqliteTx, results] = await tx.executeSql(sqlQuery);
resultData = results;
};
const db = await SQLite.openDatabase({
name: dbName,
createFromLocation: dbLocation,
key: encryptionKey
}, (result) => {...}, (result) => {...});
await db.transaction(queryDatabase);
retrun resultData;
tout fonctionne correctement, mais je dois télécharger cette base de données lors de l'exécution , donc ... quand je change EmplacementBD à:
const dbLocation = fs.DocumentDirectoryPath + "/database.db";
et télécharger la base de données SQLite de distance:
fs.downloadFile({,
fromUrl: "http://10.0.2.2:63074/Database/GetDatabase",
toFile: dbLocation,
}).promise.then(res => {
fs.exists(dbLocation).then(fileExist => {
...
});
});
Tout ne fonctionne plus, aucune erreur occures, dans la console de débogage je peux voir ceci:
OPEN database: myDatabase.db
new transaction is waiting for open operation
Où est le problème? J'utilise SQLCipher pour crypter et décrypter la base de données. Peut-être existe-t-il un autre moyen d'y parvenir, la solution doit fonctionner à la fois sur Android et iOS?