如何关闭或重新连接SQlite?

时间:2018-09-24 05:39:25

标签: expo

我有这段代码可以检查数据库是否存在,并检查数据库的版本,以便可以加载新版本的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的每个查询都返回错误,因为该连接数据库上没有表。有什么方法可以关闭或重新连接数据库。谢谢

0 个答案:

没有答案