crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Создание простенького приложения для работы с БД
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 21.7.2008, 16:28
  query.value(index)
index - это столбец таблицы, а строки перебираются с помощью query.next(), поставиь вместо index.фиксированый номер столбца, который тебя интерисует.
по сути ты сейчас идешь по диагонали таблицы
AD Дата 21.7.2008, 16:09
  Я не понял, почему он только первую запись выводит!
Вот код:
/// Соединение с базой данных и проверка этого соединения
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!

Вот как это выглядит:
[attachment=142:query_my.JPG]

Как видно на рисунке, что остальные строки пустые. Количество строк правильно отсчитывает, а вот содержание не выводит. В пред. постах показывал, какие имена д.б. Сможете помочь? Где ошибка?
Litkevich Yuriy Дата 21.7.2008, 16:01
  если у тебя в программе будет только одно соединение с БД, то можно так сделать:
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 Дата 21.7.2008, 15:53
 
Цитата(Litkevich Yuriy @ 21.7.2008, 16:35) *
этого достаточно, подключать ничего специально не надо, только модуль SQL должен быть подключен.
Работу ODBC драйвера лучше всего проверить с помощью %QTDIR%\demos\sqlbrowser, в списке доступных драйверов должен быть QODBC

Спасибо! :)
Все просто зашибись :)
Вот результат работы этой демо-программки (выборка из моей таблички тестовой):
[attachment=141:sqlTable.JPG]
Litkevich Yuriy Дата 21.7.2008, 15:35
  этого достаточно, подключать ничего специально не надо, только модуль SQL должен быть подключен.
Работу ODBC драйвера лучше всего проверить с помощью %QTDIR%\demos\sqlbrowser, в списке доступных драйверов должен быть QODBC
AD Дата 21.7.2008, 14:59
 
Цитата(Litkevich Yuriy @ 21.7.2008, 15:54) *

У мну в папочке plugins\sqldrivers есть два таких файла: qsqlodbc4.dll, qsqlodbc4.lib. Этого достаточно? Их надо подключить к моему приложению и все?
Litkevich Yuriy Дата 21.7.2008, 14:54
  просто плагин ODBC собирай
AD Дата 21.7.2008, 14:41
  Ну вообщем-то вопрос один: что-то дособирать надо для работы с SQL Server через ODBC? Сборку Qt делал ту, что была по-умолчанию. Напомню, что работаю с MS Visual Studio (в смысле, использую его компилятор - (вдруг различия будут в указании флажков каких-то))!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 18.4.2024, 20:37