Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: подключение к MS sql server r2 средствами qt.  (Прочитано 11724 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
KBAC
Постоялец

ru
Offline Offline
Пол: Мужской

« : 03-01-2012 11:24 » 

Подсоединил драйвер odbc. Только в плагинах валяется лишь дебажная версия сборки sqlodbctratatad4.dll. Если кто скажет как собрать релизную, буду очень признателен.

Код:
 QSqlDatabase db =  QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("Driver={SQL Server Native Client 10.0};Server=Dude-PC;Database=Library;Trusted_Connection=yes;");
 if (!db.open())
    {
        qDebug() << db.lastError();
        return false;
    }
В проге после выполнения db.open() управление переходит сразу к return, а не к оператору <<, как должно бы быть. Если написать, к примеру, "int i = 0", то управление все равно переходит к return. Почему ? И Почему собственно не открывается база?
Записан

У тебя все получится, главное -- верить и делать.
Порадоваться, когда все плохо -- легче, чем ты думаешь.
В действии счастье.
Вовлекая людей важно быть увлеченным чужой жизнью.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 03-01-2012 12:23 » 

Если база открылась, то код
Код: (C++)
        qDebug() << db.lastError();
        return false;
вообше не должен выполняться.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
KBAC
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 03-01-2012 13:07 » 

Так в том и дело. Во-первых, база не открывается, а ,во-вторых, первый раз встречаюсь с таким глюком, когда блок if выполняет только return внутри него а все остальные операторы чудесным образом пропускает.
Записан

У тебя все получится, главное -- верить и делать.
Порадоваться, когда все плохо -- легче, чем ты думаешь.
В действии счастье.
Вовлекая людей важно быть увлеченным чужой жизнью.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 03-01-2012 15:43 » 

Ты случайно не release пытаешся дебажить? А вообше, весь код в студию. Иначе ничего не видно. Да и еше и не мешало бы знать среду программирования и компилятор. Например в GCC с опциями  -O2 -g можно добится подобного эффекта.
« Последнее редактирование: 03-01-2012 15:47 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
KBAC
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 03-01-2012 16:25 » 

Теперь все подключается. Не знаю что случилось но где-то на 6й раз база все таки перестала ломаться и дала подключение.
Код:
bool connectDB() {
   QSqlDatabase db =  QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("Driver={SQL Server Native Client 10.0};Server=Dude-PC;Database=Library;Trusted_Connection=yes;");

   if (!db.open())
    {
        if(db.isOpenError())
        {
            qDebug() << db.lastError().text();
        }

        return false;
    }
    return true;
}
tags: connection string sql ms server 2008 qt qodbc

Добавлено через 8 минут и 51 секунду:
Компилятор mingw32. Релизной версии драйвера нет. Если можете подсказать, что надо написать в cmd для сборки оной, буду рад выслушать. Дебаговую я собирал вот так: cmd. идем в папку с исходниками драйвера.
Код:
qmake odbc.pro
mingw32-make
и потом кидаем в папку plugins.
« Последнее редактирование: 03-01-2012 16:33 от KBAC » Записан

У тебя все получится, главное -- верить и делать.
Порадоваться, когда все плохо -- легче, чем ты думаешь.
В действии счастье.
Вовлекая людей важно быть увлеченным чужой жизнью.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 03-01-2012 17:16 » 

Открой Makefile. Отредактируй его. Заместо параметров -g -Wall Должно быть -O2

Очисть полностью проект от сборки и пересобери заново. Если параметров таких нету. Кинь Makefile сюда.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 03-01-2012 17:18 » 

-Wall лучше не убирать Улыбаюсь
Зато можно добавить -s (в противовес -g).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
KBAC
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 03-01-2012 17:32 » 

А можно пжлста пояснения к параметрам?
Записан

У тебя все получится, главное -- верить и делать.
Порадоваться, когда все плохо -- легче, чем ты думаешь.
В действии счастье.
Вовлекая людей важно быть увлеченным чужой жизнью.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #8 : 03-01-2012 17:41 » new

-g Сборка в debug режиме.
-Wall Если есть хоть одна любая ошибка, выводить текст ошибки в консоль.
-On Степень оптимизации кода.
-s Исключить из конечного целевого файла сборки, таблици имен и смешений.

Если такой же принцип работы qmake как и в Linux. То в Makefile у тебя должна быть примерно такая строчка
Код:
CXXFLAGS      = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -Wall -W -D_REENTRANT $(DEFINES)
Если заместо -g поставиш -s. Сборка будет проходить в release режиме.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 03-01-2012 17:48 » 

KBAC, man gcc
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines