Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
4 / 4 / 5
Регистрация: 19.08.2016
Сообщений: 137

Класс для работы с BD

14.02.2018, 08:54. Показов 1183. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Есть у меня в программе класс для работы с БД MySQL. Он прост, как топор:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef DB_H
#define DB_H
 
#include <QSqlDatabase>
#include <QSqlQuery>
 
class DB
{
public:
    DB(){}
 
    bool connect();
    bool auth(QString name, QString pass);
 
private:
    QSqlQuery query;
    QSqlDatabase db;
};
 
#endif // DB_H
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "db.h"
 
#include <QVariant>
 
bool DB::connect()
{
    db = QSqlDatabase::addDatabase("QMYSQL");
    query = QSqlQuery(db);
 
    db.setHostName("localhost");
    db.setDatabaseName("databasename");
    db.setUserName("username");
    db.setPassword("password");
 
    return db.open();
}
 
bool DB::auth(QString name, QString pass)
{
    query.prepare("SELECT `id` FROM `users` WHERE `name` = ? AND `password` = ?");
 
    query.addBindValue(name);
    query.addBindValue(pass);
 
    query.exec();
 
    return query.next();
}
Создаётся он статически в другом классе и, когда логинится пользователь, вызывается метод auth, который возвращает true в случае верной пары логина и пароля и false в случае неверной.

И всё работает! Первые несколько часов... А потом метод auth возвращает всегда false. Я вот думаю, может коннект с БД слетает? Логиниться в БД по каждому запросу? Не хотелось бы как дятел долбиться в сервер при каждом обращении. Можно ведь законнектиться разок и кидать запросы... Или нет?

Прошу помощи!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2018, 08:54
Ответы с готовыми решениями:

Класс: создать класс Fraction для работы с дробными числами
Необходимо создать класс Fraction для работы с дробными числами. Число должно быть представлено двумя полями: целая часть – длинное целое...

Создать базовый класс - Array и производный класс - Money для работы денежной суммы
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный класс - Money для работы денежной суммы

Класс: Разработать класс для работы с матрицами(операции над матрицами)...
Добрый вечер, хочу попросить о помощи с отловом проблемы. Сама задача: разработать класс для работы с матрицами(операции над...

1
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
14.02.2018, 15:44
Лучший ответ Сообщение было отмечено Nell_core как решение

Решение

Сделайте логи. У QSqlQuery, QSqlDataBase есть методы error(), errorString() и еще можно на состояние соединения, кажется, смотреть.
Потом, если у вас запросы раз в несколько минут/часов/дней, то нет смысла держать соединение открытым.
Зато, если у вас пользователь может работать с ПО только пока авторизован, то по разрыву соединения с БД можно его отключать вообще.
В общем, здесь просто надо сесть и отлаживать. И смотреть логи, чтоб не ждать 2 часа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2018, 15:44
Помогаю со студенческими работами здесь

Класс для работы с БД
Возникли трудности с разработкой сайта. Есть класс конфиг. class Config { protected $URL = &quot;&quot; ; // Url вашего...

Класс для работы с БД
Только начал учить ООП, нашёл пример &lt;?php public function Select() { $sql = &quot;SELECT name, email, msg FROM guestbook&quot;; ...

Класс для работы со стеком
Создать класс для работы со стеком. Элемент стека – символ. Использовать стек для проверки правильности расстановки скобок трех типов...

C# класс для работы с COM-портом
подскажите, плз, где можно найти это чудо для .NET Framework 1.0. У MS нашел этот класс в 'C# 100 Samples', но он почему-то не...

Класс для работы с com портом
Доброго времени суток! Начинаю работать с с# есть у кого-нибудь готовый класс для работы с SerialPort: открытие и закрытие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru