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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подключение к MSSql без указания базы данных  (Прочитано 3260 раз)
pichini
Гость
« : Май 24, 2010, 16:10 »

Всем привет!

Нашел информацию как подключиться к конкретной базе, все работает на ура:
Код
C++ (Qt)
...
db->setDatabaseName("DRIVER={SQL Server};Server=MyServer;DATABASE=MyDataBase");
...

Но не могу разобраться каким образом настроить подключение для создания базы на сервере, либо для проверки ее существования. Eсли опустить параметр DATABASE или указать DATABASE=master, то QSqlDatabase::open() ошибок не выдает, но при попытке выполнить запрос типа:
Код
C++ (Qt)
...
query->exec("SELECT name FROM master.dbo.sysdatabases WHERE name = N'MyDataBase'")
...
выдает ошибку:
QSqlQuery::exec: database not open

Кто-нибудь знает как решить задачу?



 
Записан
pichini
Гость
« Ответ #1 : Май 25, 2010, 10:50 »

Вообщем так, похоже я не до конца понимаю как работает QSqlQuery.

Если делать аналогично примеру из доки, то получим ошибку:

Код
C++ (Qt)
   QSqlQuery myquery();
   if (myquery.exec("SELECT name FROM master.dbo.sysdatabases WHERE name = N'MyDataBase'"))
   {
       if (myquery.next())
       {
           return true;
       }
   }


Если же создавать QSqlQuery следующим образом:

Код
C++ (Qt)
   QSqlQuery myquery(*db);


то все ок.

В чем суть? хотелось бы разобряться в деталях.
Записан
MoPDoBoPoT
Гость
« Ответ #2 : Май 25, 2010, 11:59 »

В чем суть? хотелось бы разобряться в деталях.
QSqlQuery myquery()  - используется соединение по умолчанию
QSqlQuery myquery(*db) - используется, переданное в конструктор, соединение (кстати, в хранении указателя/ссылки на соединение нет необходимости, его можно получить через статический метод QSqlDatabase::database(), иначе можно столкнуться с проблемой удаления этого соединения)
Скорей всего ты создавал/добавлял соединение не по умолчанию (указал в методе QSqlDatabase::addDatabase() помимо имени драйвера еще имя соединения).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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