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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Первый раз запускаю приложение с использованием DB Нужна помощь.  (Прочитано 4179 раз)
Hrundel
Гость
« : Март 12, 2015, 19:51 »

Всем привет.

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

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

Спасибо.
« Последнее редактирование: Март 13, 2015, 13:18 от Hrundel » Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #1 : Март 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__ - имя базы данных

Должен быть запущен сервер или как? Что вообще надо?
Да, должен быть запущен.
Записан
Hrundel
Гость
« Ответ #2 : Март 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 получить имя хоста?
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #3 : Март 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");
 
Записан
Hrundel
Гость
« Ответ #4 : Март 13, 2015, 13:17 »

Спасибо, Johnik!
Получилось.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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