Название: Как обработать ошибку подключения к БД Отправлено: LamerDrv от Август 01, 2005, 13:43 Подскажите, пожалуйста, как при работе с MS SQL Server через QT-шный TDS-драйвер правильно обрабатывать ошибку подключения к базе данных?
Например, такой простой сценарий: программа при запуске выдает диалог в котором пользователь должен ввести имя и пароль для подключения к базе. Если пользователь ввел неправильное имя и/или пароль, как корректно обработать эту ситуацию? Т.е. как перехватить ошибку от SQL-сервера чтобы вывести сообщение обо ошибке, не прибегая к вызову функций самого MS SQL? Название: Как обработать ошибку подключения к БД Отправлено: alexis от Август 01, 2005, 21:46 if ( !db->open() )
qDebug( db->lastError().text() ); ?? Название: Как обработать ошибку подключения к БД Отправлено: LamerDrv от Август 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 от Август 02, 2005, 08:44 Похоже они вообще работу с SQL не взлюбили.
Это у всех серверов одна транзакция на одно соединение ? Название: Как обработать ошибку подключения к БД Отправлено: LamerDrv от Август 02, 2005, 14:47 Цитата: "alexandrl" Похоже они вообще работу с SQL не взлюбили. Ну, вообще-то, действительно работа с SQL сделана так себе. Может быть делали на скорую руку, просто чтобы можно было заявить что она есть? Цитата: "alexandrl" Это у всех серверов одна транзакция на одно соединение ? Нет, похоже одному MS SQL Server так не повезло :) (уж уделали так уделали). По крайней мере для драйверов ODBC и PostgreSQL методы поддержки транзакций содержат какой-то код, а не просто "return false;". И по-крайней мере для PostgreSQL метод db->open() реализован нормально. P.S: Я несколько озадачен. Столько хвалебных отзывов было о QT. Может это не относилось к работе с БД :?: |