刹那(せつな)の瞬き

Willkömmen! Ich heiße Setsuna. Haben Sie etwas Zeit für mich?

Qt5: 入門Qt4〜QtSqlから使ってみる

「入門Qt4プログラミング」の13章はデータベースについてです。
Qt5環境でもテキストに従い、例題を進めます。
ただし、接続するデータベースはSQLServerです。

QtCreatorで新しいプロジェクトから「Qtウィジェットアプリケーション」を選択。
適当なプロジェクト名(ここではDBTest)を付けて、ひとまず保存。
コンパイル&実行して、空ウィンドウが表示されるのを確認。

まずは、QtSqlを利用する前に、DBTest.proファイルを編集します。

QT       += core gui sql

続いて、main.cppに関連する部分を追記します。

#include "mainwindow.h"
#include <QApplication>
#include <QMessageBox>
#include <QtSql>

bool createConnetion()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("DB-SERVER");  // FreeTDSで記述した<サーバ名>
    db.setDatabaseName("NorthwindJ");
    db.setUserName("sa");
    db.setPassword("sql");
    if (!db.open()) {
        QMessageBox::critical(0, QObject::tr("DataBase Error"), db.lastError().text());
        return false;
    }
    return true;
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    if (!createConnetion()) {
        return 1;
    }

    QSqlQuery qry("SELECT * FROM [社員]");
    while (qry.next()) {
        QString code1 = qry.value(0).toString();
        QString name1 = qry.value(1).toString();
        QString name2 = qry.value(2).toString();
        qDebug() << qPrintable(code1) << ": " << qPrintable(name1) << ": " << qPrintable(name2);
    }

    MainWindow w;
    w.show();

    return a.exec();
}

再度コンパイル&実行すると、表示されるのはもちろん空ウィンドウです。
肝心の出力結果は「アプリケーション出力」に表示されます。

Photo

もし、こんなダイアログが表示された場合、SQLServerとの接続環境を確認してください。

Qtsqlerror

この例では、わざとパスワードを誤って設定してみました。

ここまでくれば、テキストの続きを進められると思います。
他のQtのサンプルを触って、GUIツール作ってみるのもいいかな。