Russian Qt Forum

Qt => Базы данных => Тема начата: Hrundel от Март 12, 2015, 19:51



Название: [РЕШЕНО] Первый раз запускаю приложение с использованием DB Нужна помощь.
Отправлено: Hrundel от Март 12, 2015, 19:51
Всем привет.

Запустил sqlbrowser из примеров. Включил MS SQL Server 2012. На нем тоже есть пару баз в качестве примера.
В качестве драйвера выбрал QODBS, но теперь без понятия что указать в качестве хоста. Попробовал localhost получаю ошибку. В чем проблема?

Скажем так - я вообще понятия не имею как работать с базами в Qt. Должен быть запущен сервер или как? Что вообще надо?
Буду рад всей информации.

Спасибо.


Название: Re: Первый раз запускаю приложение с использованием DB Нужна помощь.
Отправлено: Johnik от Март 12, 2015, 20:37
Запустил sqlbrowser из примеров. Включил MS SQL Server 2012. На нем тоже есть пару баз в качестве примера.
В качестве драйвера выбрал QODBS, но теперь без понятия что указать в качестве хоста. Попробовал localhost получаю ошибку. В чем проблема?
Подключение к БД:
Код
C++ (Qt)
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={SQL Server};Server=__ADDRESS__;Database=__DBNAME__;");
db.setUserName("username");
db.setPassword("password");
db.open();
 
__ADDRESS__ - ip адрес или имя хоста
__DBNAME__ - имя базы данных

Должен быть запущен сервер или как? Что вообще надо?
Да, должен быть запущен.


Название: Re: Первый раз запускаю приложение с использованием DB Нужна помощь.
Отправлено: Hrundel от Март 13, 2015, 11:52
Ну, вот, когда я захожу в MS SQL Server то в авторизации вижу

Server Type: Database Engine
Server Name: HRUNDEL\SQLEXPRESS
Authentifikation: Windows Authentifikation

Подключение к БД:
Код
C++ (Qt)
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={SQL Server};Server=__ADDRESS__;Database=__DBNAME__;");
db.setUserName("username");
db.setPassword("password");
db.open();
 
__ADDRESS__ - ip адрес или имя хоста
__DBNAME__ - имя базы данных

Значит при подключении я должен использовать

#define __ADDRESS__ "HRUNDEL\SQLEXPRESS"

Правильно или?
Где я могу в MS SQL Server получить имя хоста?


Название: Re: Первый раз запускаю приложение с использ&
Отправлено: Johnik от Март 13, 2015, 12:19
#define __ADDRESS__ "HRUNDEL\SQLEXPRESS"
Правильно или?
Где я могу в MS SQL Server получить имя хоста?
правильно, только макрос внутри строки не сработает, лучше так:
Код
C++ (Qt)
db.setDatabaseName(
   QString("Driver={SQL Server};Server=%1;Database=%2;")
       .arg("HRUNDEL\\SQLEXPRESS").arg("dbname"));
 
обратите внимание на экранирование "косых черт" в имени сервера, обычно с этим проблемы бывают

Authentifikation: Windows Authentifikation
попробуйте в строке подключения указать:
Код:
Trusted_Connection=Yes
Код
C++ (Qt)
   QString("Driver={SQL Server};Server=%1;Database=%2;Trusted_Connection=Yes;")
       .arg("HRUNDEL\\SQLEXPRESS").arg("dbname");
 
и в этом случае не нужны:
Код
C++ (Qt)
db.setUserName("username");
db.setPassword("password");
 


Название: Re: Первый раз запускаю приложение с использованием DB Нужна помощь.
Отправлено: Hrundel от Март 13, 2015, 13:17
Спасибо, Johnik!
Получилось.