Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qwyllum от Октябрь 16, 2014, 10:33



Название: Qt не могу подключится к Microsoft SQL Server
Отправлено: qwyllum от Октябрь 16, 2014, 10:33
Добрый день. С-но, есть код
Код:
    db = QSqlDatabase::addDatabase("QODBC3");

    db.setDatabaseName("DRIVER={SQL Server};Database=database; Server=w05.hosterby.com\\SQLEXPRESS;");
    db.setUserName("db_admin");
    db.setPassword("adminpass");

    if(!db.open()){
        qDebug()<<"ERROR: "<<QSqlError(db.lastError()).text();
    } else {
        qDebug()<<"Ok";
    }
     

Используя программу, типа Heidi SQL, тип соединения Microsoft SQL Server TCP/IP подключаюсь без проблем. А тут сервер выдает

ERROR:  "[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен. [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). QODBC3: Unable to connect"
Может кто знает, в чем может быть дело?


Название: Re: Qt не могу подключится к Microsoft SQL Server
Отправлено: Johnik от Октябрь 16, 2014, 10:45
"DRIVER={SQL Server};Database=database; Server=w05.hosterby.com\\SQLEXPRESS;"
попробуйте заESCапить слеши:
Код:
"DRIVER={SQL Server};Database=database; Server=w05.hosterby.com\\\\SQLEXPRESS;"


Название: Re: Qt не могу подключится к Microsoft SQL Server
Отправлено: titan83 от Октябрь 28, 2014, 12:57
db.setDatabaseName("DRIVER={SQL Server};Database=database; Server=w05.hosterby.com\\SQLEXPRESS;");
Что написано в odbc.ini?
Просто на самом деле нет нужды писать всю эту блуду, достаточно лишь того, что прописано значением Database.
У меня типичный алгоритм подключения такой:
Код:
    if (!(db.isOpen())) {
        db.setDatabaseName(getConnectionName());
        db.setUserName(getUsername());
        db.setPassword(getPassword());

        if (db.open()) {           
            return true;
        }
getConnectionName() возвращает всего лишь имя секции, описывающей подключение к конкретному серверу, т.е. например, MSSQL. И все.
Это проверено на 2005 и на 2008 версиях.