やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

QtでSQLite3を使うラッパクラスを作ってみた

 微妙なものになった。

成果物

github.com

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 2018-06-27
  • Qt 5.7.1

前回

ソースコード抜粋

mainwindow.cpp

#include "qtsqlitedb.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QtSqliteDb db("Memo", QApplication::applicationDirPath());
    db.Query(tr("create table Memo(id INTEGER PRIMARY KEY AUTOINCREMENT, Memo TEXT, Created TEXT)"));
    db.Query(tr("insert into Memo(Memo,Created) values('メモ内容', '1999-12-31 23:59:59')"));
    QSqlQuery query = db.Query(tr("select * from Memo"));
    while (query.next()) {
        qDebug() << query.value(0) << "|" << query.value(1) << "|" << query.value(2);
    }
}

 呼び出し元。DB接続やトランザクションの処理を省略できる。でもダサいなぁ。

所感

 せめてQuery()の引数をQSqlQueryにしたいのだが、QSqlDatabaseを隠蔽しているので難しい。QSqlQueryを返せばいいのだが、トランザクション処理とセットにしたい為、渡しづらい。QSqlQueryで受け取って作り直すのも非効率だし。どうしたものか。