Russian Qt Forum

Qt => Базы данных => Тема начата: KBAC от Январь 01, 2012, 22:57



Название: подключение к MS sql server r2
Отправлено: 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;
    }


Название: Re: подключение к MS sql server r2
Отправлено: Странник от Январь 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;
    }


Название: Re: подключение к MS sql server r2
Отправлено: KBAC от Январь 03, 2012, 09:59
Не получается как вы подсказали, странник.
Может это из-за того, что нет релизной версии .dll для этого драйвера ?
Еще не совсем понятно, какие имя и пароль писать при подключении? Если подключаться через managment studio -там стоит windows authentification. И я при подключении в проге указываю имя и пароль, какие использую для входа на свой рабочий стол в винде.


Название: Re: подключение к MS sql server r2
Отправлено: Странник от Январь 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;
    }


Название: Re: подключение к MS sql server r2
Отправлено: KBAC от Январь 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'") 
А если без драйвера, то оставляет ту же ошибку.


Название: Re: подключение к MS sql server r2
Отправлено: KBAC от Январь 03, 2012, 10:34
Класс, если поменять
Код:
 Trusted_Connection=True; 
на
Код:
Trusted_Connection=Yes;
как написано тут http://www.connectionstrings.com/sql-server-2008#p3 , то при пошаговой отладке после выполнения db.open следующая операция return , а не qDebug() <<


Название: Re: подключение к MS sql server r2
Отправлено: KBAC от Январь 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