Russian Qt Forum
Ноябрь 24, 2024, 04:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: НЕ работает проверка на соединение с БД.  (Прочитано 3267 раз)
demiurg
Гость
« : Октябрь 15, 2011, 17:37 »

Перед каждой серией запросов решил поставить проверку на соединение. А то мало ли чего бывает.  А она не работает - ни когда службу перезапускаю, ни когда база по wait_timeout рубит соединение. Постоянно true после запуска приложения.

Код:
bool c_e=db.isOpen();
 if (!c_e)     //!sql.exec(tr("SELECT 1")))
        {
        bool connected = db.open();
            if (!connected)
                {
                cout << STR(QObject::tr("Не могу запустить БД")+ 0x0d+0x0a);
                }
                else
                {
                 cout << STR(QObject::tr("Переподключение")+ 0x0d+0x0a);
                };
        };

Может ещё что надо настроить?
ЗЫ ДА , забыл,при первом подключении работает.
« Последнее редактирование: Октябрь 15, 2011, 17:45 от demiurg » Записан
Странник
Гость
« Ответ #1 : Октябрь 15, 2011, 22:58 »

тема несколько раз поднималась - решения, насколько я помню, так и не нашлось. да и не так оно нужно, в вашем случае. анализируйте значение, возвращаемое exec() и lastError().
Записан
demiurg
Гость
« Ответ #2 : Октябрь 15, 2011, 23:16 »

Пришлось всё таки оставить "select 1".
Тоже кстати если в первый раз подключается- говорит что запрос не прошёл. А дальше - как будто подключение не разрывалось, а запрос всётаки не выполнился.

А ещё вопрос : где можно почитать про опции соединения:
CLIENT_COMPRESS
CLIENT_FOUND_ROWS
CLIENT_IGNORE_SPACE
CLIENT_SSL
CLIENT_ODBC
CLIENT_NO_SCHEMA
CLIENT_INTERACTIVE
UNIX_SOCKET
Которые в setConnectOptions прописываются. Особенно интересно что за опция CLIENT_INTERACTIVE.
Записан
Странник
Гость
« Ответ #3 : Октябрь 16, 2011, 23:33 »

А ещё вопрос : где можно почитать про опции соединения:
CLIENT_COMPRESS
CLIENT_FOUND_ROWS
CLIENT_IGNORE_SPACE
CLIENT_SSL
CLIENT_ODBC
CLIENT_NO_SCHEMA
CLIENT_INTERACTIVE
UNIX_SOCKET
Которые в setConnectOptions прописываются. Особенно интересно что за опция CLIENT_INTERACTIVE.
в документации к серверу, MySQL я так понимаю. там же можно найти коды ошибок, возвращаемые драйвером. и через lastError() по коду ошибки определить, что запрос не выполнился из-за отсутствия соединения с сервером.
Записан
demiurg
Гость
« Ответ #4 : Октябрь 18, 2011, 01:18 »

АА , точно, нашёл... Я думал это опции из Qt Улыбающийся.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 20.