Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создание простенького приложения для работы с БД
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
AD
Ну вообщем-то вопрос один: что-то дособирать надо для работы с SQL Server через ODBC? Сборку Qt делал ту, что была по-умолчанию. Напомню, что работаю с MS Visual Studio (в смысле, использую его компилятор - (вдруг различия будут в указании флажков каких-то))!
Litkevich Yuriy
просто плагин ODBC собирай
AD
Цитата(Litkevich Yuriy @ 21.7.2008, 15:54) *

У мну в папочке plugins\sqldrivers есть два таких файла: qsqlodbc4.dll, qsqlodbc4.lib. Этого достаточно? Их надо подключить к моему приложению и все?
Litkevich Yuriy
этого достаточно, подключать ничего специально не надо, только модуль SQL должен быть подключен.
Работу ODBC драйвера лучше всего проверить с помощью %QTDIR%\demos\sqlbrowser, в списке доступных драйверов должен быть QODBC
AD
Цитата(Litkevich Yuriy @ 21.7.2008, 16:35) *
этого достаточно, подключать ничего специально не надо, только модуль SQL должен быть подключен.
Работу ODBC драйвера лучше всего проверить с помощью %QTDIR%\demos\sqlbrowser, в списке доступных драйверов должен быть QODBC

Спасибо! :)
Все просто зашибись :)
Вот результат работы этой демо-программки (выборка из моей таблички тестовой):
Нажмите для просмотра прикрепленного файла
Litkevich Yuriy
если у тебя в программе будет только одно соединение с БД, то можно так сделать:
static bool dbconnect()
{

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("MY_ODBC_ALIAS");
    db.setUserName("user");
    db.setPassword("password");
    
    if (!db.open())
    {
        QString qerr = db.lastError().text();
        QMessageBox::critical(0,  QObject::tr("Ошибка базы данных"),
                                 QObject::tr("Невозможно установить соединение.\n\r")+qerr,
                                QMessageBox::Cancel);
        return 1;
    }
    return 0;
}
AD
Я не понял, почему он только первую запись выводит!
Вот код:
/// Соединение с базой данных и проверка этого соединения
void TestDBAppl::connectClick()
{
    is_conn = (createConnection()) ? true : false;

    if(!is_conn)
    {
        QMessageBox msg(QMessageBox::Critical, "Connections", "Connection is not found", QMessageBox::Ok, this);
        msg.exec();
        return;
    }
    else
    {
        QSqlQuery query;
        if(query.exec("use MyDB"))
        {
            QMessageBox msg(QMessageBox::Information, "Connections", "Successfully", QMessageBox::Ok, this);
            msg.exec();
        }
        else
        {
            QMessageBox msg(QMessageBox::Information, "Connections", "Isn't this table", QMessageBox::Ok, this);
            msg.exec();
        }
    }
}

/// Обзор всех записей в таблице
void TestDBAppl::selectClick()
{
    QSqlQuery query;
    query.exec("select name from UserNames");

    int index = 0;
    while(query.next())
    {
        QString recordName = query.value(index).toString();
        listDBNames -> addItem(recordName);
        ++index;
    }
    update();
}


listDBNames - это QListWidget!

Вот как это выглядит:
Нажмите для просмотра прикрепленного файла

Как видно на рисунке, что остальные строки пустые. Количество строк правильно отсчитывает, а вот содержание не выводит. В пред. постах показывал, какие имена д.б. Сможете помочь? Где ошибка?
Litkevich Yuriy
query.value(index)
index - это столбец таблицы, а строки перебираются с помощью query.next(), поставиь вместо index.фиксированый номер столбца, который тебя интерисует.
по сути ты сейчас идешь по диагонали таблицы
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.