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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как обработать ошибку подключения к БД  (Прочитано 6115 раз)
LamerDrv
Гость
« : Август 01, 2005, 13:43 »

Подскажите, пожалуйста, как при работе с MS SQL Server через QT-шный TDS-драйвер правильно обрабатывать ошибку подключения к базе данных?

Например, такой простой сценарий:
программа при запуске выдает диалог в котором пользователь должен ввести имя и пароль для подключения к базе. Если пользователь ввел неправильное имя и/или пароль, как корректно обработать эту ситуацию? Т.е. как перехватить ошибку от SQL-сервера чтобы вывести сообщение обо ошибке, не прибегая к вызову функций самого MS SQL?
Записан
alexis
Гость
« Ответ #1 : Август 01, 2005, 21:46 »

if ( !db->open() )
   qDebug( db->lastError().text() );

??
Записан
LamerDrv
Гость
« Ответ #2 : Август 01, 2005, 22:24 »

Цитата: "alexis"
if ( !db->open() )
   qDebug( db->lastError().text() );

??


Увы, в случае с TDS-драйвером не пашет.
Вызов lastError() дает результат NoError.
Хотя с другими вроде все нормально работает (например, с PostgreSQL).
После просмотра исходного текста TDS-драйвера (qsql_tds.cpp) сложилось впечатление, что троли очень сильно не взлюбили MS SQL Server. Одни только методы beginTransaction(), commitTransaction() и rollbackTransaction() чего стоят  :cry:
Записан
alexandrl
Гость
« Ответ #3 : Август 02, 2005, 08:44 »

Похоже они вообще работу с SQL не взлюбили.
Это у всех серверов одна транзакция на одно соединение ?
Записан
LamerDrv
Гость
« Ответ #4 : Август 02, 2005, 14:47 »

Цитата: "alexandrl"
Похоже они вообще работу с SQL не взлюбили.


Ну, вообще-то, действительно работа с SQL сделана так себе. Может быть  делали на скорую руку, просто чтобы можно было заявить что она есть?

Цитата: "alexandrl"
Это у всех серверов одна транзакция на одно соединение ?


Нет, похоже одному MS SQL Server так не повезло  Улыбающийся  (уж уделали так уделали). По крайней мере для драйверов ODBC и PostgreSQL методы поддержки транзакций содержат какой-то код, а не просто "return false;".
И по-крайней мере для PostgreSQL метод db->open() реализован нормально.

P.S: Я несколько озадачен. Столько хвалебных отзывов было о QT. Может это не относилось к работе с БД :?:
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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