SQLite3はファイル型のデータベース。簡単なDBといったらコレ。Qtでもライブラリが用意されていた。
成果物
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 2018-06-27
- Qt 5.7.1
手順
.pro
QT += core gui sql
sql
を追加する。
ソースコード
抜粋。
Open & Close
#include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("/tmp/work/Memo.sqlite3"); db.open(); ... db.close();
Query
QSqlQuery query(db);
query.exec("SQL文");
Create Table
QSqlQuery query(db);
query.exec("create table Memo(id INTEGER PRIMARY KEY AUTOINCREMENT, Memo text, Created text)");
Insert
query.prepare("insert into Memo (Memo, Created) values (?, ?)"); QString text = "someText"; query.bindValue(0, text); QDateTime dt = QDateTime::currentDateTime(); query.bindValue(1, dt.toString("yyyy-MM-dd HH:mm:ss.zzz")); query.exec();
Select
query.exec("select * from Memo WHERE Memo = '"+text+"'"); while (query.next()) { int id = query.value(0).toInt(); QString memo = query.value(1).toString(); qDebug() << QString("id(%1),memo(%2)").arg(id).arg(memo); }
確認
SQLite3コマンドでDBを確認する。
$ sqlite3 /tmp/work/Memo.sqlite3 SQLite version 3.22.0 2018-01-22 18:45:57 Enter ".help" for usage hints. sqlite>
sqlite> .tables Memo
sqlite> select * from Memo; 1|someText|2018-11-27 12:44:12.373
問題なし。