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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: подключение к MS sql server r2  (Прочитано 6485 раз)
KBAC
Гость
« : Январь 01, 2012, 22:57 »

Подсоединил драйвер odbc. Только в плагинах валяется лишь дебажная версия сборки sqlodbctratatad4.dll. Если кто скажет как собрать релизную, буду очень признателен.
В программе при подключении базки lastError() сообщает мне :
Код:
QSqlError(0, "QODBC3: Unable to connect", "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified")
Из-за чего такое может быть?
код подключения:
Код:
 QSqlDatabase db =  QSqlDatabase::addDatabase("QODBC");
    db.setHostName("DUDE-PC");
    db.setDatabaseName("Library");
    db.setUserName("Dude-PC\Dude");
    if (!db.open())
    {
        qDebug() << db.lastError();
        return false;
    }
Записан
Странник
Гость
« Ответ #1 : Январь 03, 2012, 08:12 »

Код:
 QSqlDatabase db =  QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("Data Source=DUDE-PC;Initial Catalog=Library;User Id=YOUR_Username;Password=YOUR_Password;");
    if (!db.open())
    {
        qDebug() << db.lastError();
        return false;
    }
Записан
KBAC
Гость
« Ответ #2 : Январь 03, 2012, 09:59 »

Не получается как вы подсказали, странник.
Может это из-за того, что нет релизной версии .dll для этого драйвера ?
Еще не совсем понятно, какие имя и пароль писать при подключении? Если подключаться через managment studio -там стоит windows authentification. И я при подключении в проге указываю имя и пароль, какие использую для входа на свой рабочий стол в винде.
Записан
Странник
Гость
« Ответ #3 : Январь 03, 2012, 10:20 »

если бы проблема была в dll - выдавал бы ошибку подключения плагина при попытке создать соединение. если используете аутентификацию windows, попробуйте так:
Код:
    QSqlDatabase db =  QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("Server=DUDE-PC;Database=Library;Trusted_Connection=True;");
    if (!db.open())
    {
        qDebug() << db.lastError();
        return false;
    }
Записан
KBAC
Гость
« Ответ #4 : Январь 03, 2012, 10:25 »

Код:
db.setDatabaseName("Driver={SQL Server Native Client 10.0};Server=DUDE-PC;Database=Library;Trusted_Connection=True;");
Вот так если подключаться пишет
Код:
QSqlError(0, "QODBC3: Unable to connect", "[Microsoft][SQL Server Native Client 10.0]Invalid value specified for connection string attribute 'Trusted_Connection'") 
А если без драйвера, то оставляет ту же ошибку.
Записан
KBAC
Гость
« Ответ #5 : Январь 03, 2012, 10:34 »

Класс, если поменять
Код:
 Trusted_Connection=True; 
на
Код:
Trusted_Connection=Yes;
как написано тут http://www.connectionstrings.com/sql-server-2008#p3 , то при пошаговой отладке после выполнения db.open следующая операция return , а не qDebug() <<
Записан
KBAC
Гость
« Ответ #6 : Январь 03, 2012, 19: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
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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