У меня возникли проблемы с попыткой подключения к двум различным базам данных в одном приложении Qt. У меня есть моя база данных, в которой хранится вся информация, собранная приложением, и новая база данных журнала, которая позволяет мне отслеживать все изменения, которые происходят с Приложением, нажатия кнопок, загрузки экрана и т. Д., Для легкой отладки после ее выпуска. Отдельно базы данных работают отлично, но когда я пытаюсь использовать их оба, будет работать только один. Я читал, что это может быть связано с тем, что я не назвал соединения, и, очевидно, только последняя подключенная база данных могла использовать соединение по умолчанию. Однако, когда я даю имена баз данных они не будут работать вообще, IsOpen() возвращает истину на обоих, но как только они пытаются выполнить запрос, я получаю ошибкиQSqlDatabase Подключение к нескольким базам данных
"QSqlQuery::prepare: database not open"
"QSqlError(-1, "Driver not loaded", "Driver not loaded")"
Мои объявления двух баз данных:
database_location = filepath.append("/logger.sqlite");
logDB = QSqlDatabase::addDatabase("QSQLITE", "LoggerDatabaseConnection");
logDB.setHostName("localhost");
logDB.setDatabaseName(database_location);
для подключения к базе данных Logger и:
database_location = filepath.append("/db.sqlite");
db = QSqlDatabase::addDatabase("QSQLITE", "NormalDB");
db.setHostName("localhost");
db.setDatabaseName(database_location);
Кроме того, когда я бегу первый запрос на базы данных, чтобы увидеть, если их таблицы существуют, я использую
QSqlQuery query("LoggerDatabaseConnection");
, а также для нормальной базы данных, но я все еще получаю проблемы с подключением даже после объявления подключения к базе данных для запуска запроса.
База данных, используемая для приложения, объявлена как статическая QSqlDatabase в пространстве имен для создания глобального эффекта, поэтому каждый может получить к ней доступ, это был предыдущий программист, и я создал базу данных журнала как Singleton с подключением к частной базе данных , Как я уже сказал, обе версии кода работают отдельно, но когда они вместе, они борются друг с другом. Я знаю, что есть огромная дискуссия о правильном дизайне Singleton vs Dependecy Injection, но опять же код работает отдельно, поэтому я доволен тем, как он разработан на данный момент. Если есть какая-либо недостающая информация или у вас есть какие-либо идеи, сообщите мне. Спасибо.
Я закончил тем, что просто объединил базу данных с регистратором, чего я старался избегать, чтобы сохранить все модульное. Тем не менее, я начал тестовый проект с двумя подключениями к базе данных и использовал предложенный вами синтаксис, и, похоже, он, наконец, работает. Спасибо вам большое за ваше время. – JordanTSI