Михаиллл7 июня 2020 г. 8:54
Как в QtWebApp правильно подключаться к базе
Добрый день.
Делаю на QtWebApp сервер. Сделал класс DataBase для работы с базой.
Если открывать соединение с базой в классе RequestHandler в конструкторе, то при ображение к базе в функции
void RequestHandler::service(HttpRequest& request, HttpResponse& response)
выдвется ошибка подключения, а если открывать соединение в этой функции, то работает нормально при одном запросе, если идет 2 запрос, пока первый запрос шерстит базу, то выдается ошибка и сервер падает.
07.06.2020 15:36:44.134 1 WARNING 0x20d4 QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
Скажите пожалуйста как и где создать объект класса DataBase и открыть его, что бы все работало?
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Дмитрий
- 7 мая 2024 г. 19:40
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:60баллов,
- Очки рейтинга-1
d
- dsfs
- 26 апреля 2024 г. 14:56
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 12:50
EVA25 декабря 2023 г. 21:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
добавить qlineseries в функции в функции: "GPlotter::addSeries(QString title, QVector &arr)" я вызываю метод setChart(...), я в конструктор передал адрес на QChartView элемент
BlinCT5 мая 2024 г. 15:46
Best Indian Food Restaurant In Cincinnati OH Ready to embark on a gastronomic journey like no other? Join us at App india restaurant and discover why we're renowned as the Best Indian Food Restaurant In Cincinnati OH . Whether y…
Evgenii Legotckoi3 мая 2024 г. 0:07
IscanderChe30 апреля 2024 г. 14:22
Добрый день.
Я бы сделал подключение к базе данных при старте приложения, а запросы уже отдельно делал.
Но уж точно не в методе RequestHandler::service, ведь судя по его названию, он обрабатывает запросы, а не отвечает за первоначальную инициализацию.
В общем подключайтесь к базе данных при первоначальной инициализации, а уж потом различные запросы выполняйте.
Если при старте, то получается так, база не конектится и в 1 строке пишет ошибку, при подключениях клиента к серверу выдает ошибки о не подключеной базе.
Возможно дело в том, что при подключении к базе каждый раз нужно указывать новое имя подключения. Может быть вы знаете как это сделать? Такой вариант не работает:
Нужно задавать уникально имя подключению базы
А потом в запросе указывать эту базу
осталось понять как делать уникальные имена
добавляйте к имени текущее время.
Я решил добавлять тип запроса + уникальный номер запрашиваюшего устройства + 2 рандомных числа от 0 до 999999, так скорей всего будет уникально, даже если запросы последуют однавременно.
А со временем до милисекунд гарантировано будет уникально :-)
Краще всетаки до бази конектитись при старті, не рекомендувавби вам на кожен запит створювати конекшин, так як сервер баз даних може мати лімінт на кількість сесій, і і не рекомендувавби вішати всіх на один конекшин, так як там теж є ліміти, оптимальний варіант для себе, і доречі схожа рекомендація була на стековефло, це декілька конекшинів які видаютсья по черзі на нову сесію (ну це в мому випадку так як в мене клієнт конектиться по websocket)
час до мілісекунд теж не найкращий варіант бо може бути конфлікт, і я на це декілька разів попадав тому використовую щось типу
видаляти доречі можна по
при запуску програми є функція типу
а потім при конекті клієнта по черзі по кругу видаєтсья їм назва
ну f корbстувач вже використовує при запиті
доречі в цьому впадку потрібно переконатись що сервер не закриваю конекти по таймауту