QT+freeTDS+MSSQL 2005

Модератор: Модераторы разделов

Аватара пользователя
yto4ko
Сообщения: 9
ОС: Gentoo Linux

QT+freeTDS+MSSQL 2005

Сообщение yto4ko »

Здравствуйте. Начал изучать C++ и QT, чтобы написать кроссплатформенное приложение :) Всё было отлично, пока не решил вывести данные из таблицы БД в QTableView.
Вот код:

Код: Выделить всё


if (createConnection(&name, &db, &user, &pass))
{
        QSqlQueryModel *model = new QSqlQueryModel;
        model->setQuery("SELECT * FROM first");
        model->setHeaderData(0, Qt::Horizontal, tr("ID"));
        model->setHeaderData(1, Qt::Horizontal, tr("Name"));
        model->setHeaderData(2, Qt::Horizontal, tr("Salary"));
        this->ui->tableView->setModel(model);
        this->ui->tableView->show();
 }


функция createConnection объявлена в connection.h

Код: Выделить всё

static bool createConnection(QString *host, QString *database, QString *user, QString *pass)
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName(*host);
#if defined(Q_OS_LINUX)
    //Для Linux
    db.setDatabaseName("mssrv");
    //db.setDatabaseName("DRIVER={TDS};Server="+*host+";port=1433;Database="+*database+"");
#else
    //Для Windows
    db.setDatabaseName("DRIVER={SQL Native Client};Server=192.168.1.19;Database=test;Trusted_Connection=no");
#endif
    db.setUserName(*user);
    db.setPassword(*pass);

    if (!db.open()) {
        QSqlError error = db.lastError();
        QMessageBox::critical(0, "Ошибка о_О", "Проблема ..."+error.databaseText(), QMessageBox::Cancel);
        return false;
    }
    return true;
}

В Windows всё отлично работает, в QTableView выводятся все данные.
В Linux - выводится первый столбец - id (тип int), остальные 2 столбца делал и varchar, и nvarchar ... ничего не помогает - просто пустоту выводит :(
И сыпяться вот такие сообщения:

Код: Выделить всё

qGetStringData: Error while fetching data ( "[FreeTDS][SQL Server]Program type out of range" )

Если я всё правильно понимаю - проблема в unixODBC+FreeTDS ... Но вот как побороть :(
У кого какие предложения имеются?
Может кто просто поделится опытом работы на C++ в Linux с связке с MSSQL... Буду рад услышать любые советы по этому поводу:)
И ещё - я так понял как таковую UTF-8 кодировку MSSQL не поддерживает - это так?
PS если в коде что то не так (как вам кажется) - сообщите)) Я только пару дней назад начал более-менее писать на C++ и QT - ошибок может быть море ...
Спасибо сказали: