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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подключение к БД  (Прочитано 2581 раз)
blood_shadow
Гость
« : Сентябрь 16, 2011, 18:34 »

Есть код подключения к БД
Код
C++ (Qt)
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("");
db.setDatabaseName("");
db.setUserName("");
db.setPassword("");
 
if (!db.open())
{
       qDebug() << "Connection to db failure";
 
       return false;
}
 
qDebug() << "connection success";
 

несмотря на то что поля пароля, хоста и т.д пустые на экран выводится connection success,
Вопрос почему так происходить? и как проверить что я действительно подключился к данной БД с данным именем,
паролем, пользователем и хостом?
Записан
Fess
Гость
« Ответ #1 : Сентябрь 16, 2011, 18:43 »

Вообще забавно Улыбающийся
Проверить - сделать простейший запрос: SELECT что-то там FROM системные таблицы
Ну или getdate() или что-то в таком духе.
Без коннекта серверу точно завалится.
Записан
blood_shadow
Гость
« Ответ #2 : Сентябрь 16, 2011, 20:47 »

Вообще забавно Улыбающийся
Проверить - сделать простейший запрос: SELECT что-то там FROM системные таблицы
Ну или getdate() или что-то в таком духе.
Без коннекта серверу точно завалится.

короче делаю простенький запрос QSqlQuery query("SHOW TABLES");
Код
C++ (Qt)
db.setHostName("");
db.setDatabaseName("books_db");
db.setUserName("root");
db.setPassword("pass");
 
if (!db.open())
{
   qDebug() << "Connection to db failure";
   qDebug() << "Driver text -> " << db.lastError().driverText();
   qDebug() << "DB text" << db.lastError().databaseText();
 
   return false;
}
 
 
qDebug() << "connection success -> " ;
 
QSqlQuery query("SHOW TABLES");
qDebug() << query.isActive();
 
 

самое интересное насчет void QSqlDatabase::setHostName ( const QString & host ), асистант говорит:
"Sets the connection's host name to host. To have effect, the host name must be set before the connection is opened. Alternatively, you can close() the connection, set the host name, and call open() again.

There is no default value."

но как можно увидеть выше имя хоста не указано, но подключение проходить успешно query.isActive()
возвращает "true", наверно у самой БД есть значение хоста по умолчанию - а именно "localhost"
Записан
asvil
Гость
« Ответ #3 : Сентябрь 16, 2011, 23:10 »

QSqlDatabase является всего лишь оберткой для клиентской библиотеки.
Также SQL сервер возможно настроен для доверия любым подключениям с локального хоста.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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