Open в классе QSqlDatabase, смысл... |
Здравствуйте, гость ( Вход | Регистрация )
Open в классе QSqlDatabase, смысл... |
ht1515 |
16.10.2015, 17:49
Сообщение
#1
|
Студент Группа: Участник Сообщений: 29 Регистрация: 14.4.2012 Пользователь №: 3324 Спасибо сказали: 0 раз(а) Репутация: 0 |
В чем суть ?
Цитата bool QSqlDatabase::open(const QString & user, const QString & password) This is an overloaded function. Opens the database connection using the given user name and password. Returns true on success; otherwise returns false. Error information can be retrieved using the lastError() function. This function does not store the password it is given. Instead, the password is passed directly to the driver for opening the connection and it is then discarded. See also lastError(). Либо он у меня не работает, либо я неправильно его трактую... При инициализации забиваю все параметры (пароль, логин, драйвер, НАЗВАНИЕ БД, порт, айпишник). И вызываю опен, затем делаю проверку Цитата bool QSqlDatabase::isOpen() const всегда true.... О чем это true говорит? раньше я думал что это признак коннекта к БД, так как в мануале написано Цитата Opens the database connection using the given user name and password Теперь мне кажется что это коннект к "сессии" работы с мусклом. Просто я забиваю имена БД, которых нет вызываю этот open всегда он возвращает true. Если я прав про теорию с сессиями, то как вы проверяете наличие БД тогда? |
|
|
At3iSt |
23.10.2015, 18:35
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 23.10.2015 Пользователь №: 4467 Спасибо сказали: 0 раз(а) Репутация: 0 |
та же проблема.. специально на этом форуме зарегистрировался чтобы спросить )))
надо как-то проверить правильность подключения.. |
|
|
At3iSt |
23.10.2015, 23:14
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 23.10.2015 Пользователь №: 4467 Спасибо сказали: 0 раз(а) Репутация: 0 |
пока придумал костыль.. после:
проверять количество таблиц в БД:
если 0, то связи с БД нет.. иначе всё в порядке.. конечно, у этого решения есть минусы, но для предварительной проверки сойдёт.. + ещё нужно проверять выполнение каждого запроса:
сей метод возвращает false если при выполнении запроса возникла ошибка.. ну и далее уже обрабатывать ошибки.. а так, насколько я понял, метод open() вернёт false в том случае, если есть проблемы с драйвером (например отсутствует библиотека).. если же с драйвером всё ок, то вернёт true. |
|
|
Litkevich Yuriy |
24.10.2015, 17:18
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
С MySQL не пробовал, возможно твоя догадка верна, всё-таки MySQL - стационарная БД.
В Firebird (не стационарная, т.е. файлы БД могут лежать в разных местах) функция open() вернёт ЛОЖЬ, если файла БД нет в указанном месте. |
|
|
Текстовая версия | Сейчас: 25.11.2024, 8:55 |