Как закрыть или переподключить SQlite? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть этот код, чтобы проверить, существует ли база данных или нет, и проверить версию базы данных, чтобы я мог загрузить новую версию базы данных.

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, но каким-то образом соединение все еще подключается к старой базе данных.каждый запрос к базе данных возвращает ошибку, так как в этой соединительной базе данных нет таблицы.Есть ли как-то, как я могу закрыть или переподключить базу данных.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...