Russian Qt Forum

Qt => Базы данных => Тема начата: blood_shadow от Сентябрь 16, 2011, 18:34



Название: Подключение к БД
Отправлено: 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,
Вопрос почему так происходить? и как проверить что я действительно подключился к данной БД с данным именем,
паролем, пользователем и хостом?


Название: Re: Подключение к БД
Отправлено: Fess от Сентябрь 16, 2011, 18:43
Вообще забавно :)
Проверить - сделать простейший запрос: SELECT что-то там FROM системные таблицы
Ну или getdate() или что-то в таком духе.
Без коннекта серверу точно завалится.


Название: Re: Подключение к БД
Отправлено: blood_shadow от Сентябрь 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"


Название: Re: Подключение к БД
Отправлено: asvil от Сентябрь 16, 2011, 23:10
QSqlDatabase является всего лишь оберткой для клиентской библиотеки.
Также SQL сервер возможно настроен для доверия любым подключениям с локального хоста.