我有这段代码可以检查数据库是否存在,并检查数据库的版本,以便可以加载新版本的db。
export function getDatabase()
{
return SQLite.openDatabase(c.APP_DATABASE_LOCAL_NAME);
}
export function checkDatabase(callback)
{
database = getDatabase();
console.log(database);
database.transaction(
tx => {
tx.executeSql('select Version from INFO',
[],
(_, { rows }) =>{
let versiondata = rows._array[0];
if (versiondata.Version !== c.APP_DATA_VERSION)
{
console.log("wrong version download");
downloadDatabase(callback);
} else callback(true);
},
(_,error) => {
console.log("no database download");
downloadDatabase(callback);
});
},
null,
null
);
}
export function downloadDatabase(callback)
{
FileSystem.downloadAsync(
Asset.fromModule(require('../../assets/data/database.db')).uri,
FileSystem.documentDirectory + 'SQLite/' + c.APP_DATABASE_LOCAL_NAME
)
.then(({ uri }) => {
console.log('Finished downloading to ', uri);
callback(true);
})
.catch(error => {
console.error(error);
});
}
问题是当我下载数据库时,新数据库替换了database.db文件,但是以某种方式,连接仍然连接到旧数据库。对db的每个查询都返回错误,因为该连接数据库上没有表。有什么方法可以关闭或重新连接数据库。谢谢