我想在Expo-SQLite中打开一个现有的SQLite数据库文件。假设该文件位于设备中的某个位置(例如设备Documentsfolder),以便用户可以通过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')
让我在db
上查询SQL查询。
编辑:
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)) })
什么都不输出。.我用DB Browser检查数据库文件中的SQLite,文件本身看起来还不错。.
答案 0 :(得分:0)
已更新:
尝试Expo Expo小吃: 当您打开数据库时,请注意复制的路径:
let db = SQLite.openDatabase('sample1.db');