うざいメッセージをすべて消した。
成果物
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 2018-06-27
- Qt 5.7.1
前回
- http://ytyaru.hatenablog.com/entry/2019/12/23/000000
- http://ytyaru.hatenablog.com/entry/2019/12/22/000000
- http://ytyaru.hatenablog.com/entry/2019/12/21/000000
学んだこと
- QSqlDatabase
QSqlDatabase::contain("DB名")
: 指定したDBが含まれているかQSqlDatabase::addDatabase("QSQLITE", "DB名")
: DBを追加する- プロセス中に1回のみ実行すること。さもなくば実行時に次の文言が出力される
QSqlDatabasePrivate::addDatabase: duplicate connection name 'MemoDb', old connection removed.
- 第2引数にDB名を指定すること。さもなくばDBのインスタンスを取得できない
- プロセス中に1回のみ実行すること。さもなくば実行時に次の文言が出力される
QSqlDatabase::database("DB名")
: 指定したDBのインスタンスを取得する。関数内変数で取得すること- もし
addDatabase
の戻り値であるDBインスタンスをクラスメンバ変数にしてQSqlDatabase::removeDatabase()
を呼ぶと、次の文言が出力されるQSqlDatabasePrivate::removeDatabase: connection 'MemoDb' is still in use, all queries will cease to work.
- もし
所感
DBをメンバ変数から参照する目論見はもろくも崩れ去った。
あとDBクラスの実装が冗長すぎる。せめて呼出元は以下くらいシンプルにやりたい。
MemoDb memoDb; Object o = { Memo = "メモ内容", Created = "2000-01-01 00:00:00.000" }; memoDb.Write(o);
C++にはJavaScriptでいうObject
、Pythonでいうdict
に該当するものはあるのだろうか? 以下が参考になる?
でもSQLのInsert文を作成せねばならないのはどうにもならんか。マッパーはないの?
DBからUIへのマッパーはあるみたい。それもほしいけど、その前にSQL文を隠してオブジェクト指向に書けるヤツが欲しいのよ。マッパー? ラッパー? そういうのないの?