QSqlRecordを渡してinsertできた。
成果物
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 2018-06-27
- Qt 5.7.1
前回
- http://ytyaru.hatenablog.com/entry/2019/12/28/000000
- http://ytyaru.hatenablog.com/entry/2019/12/27/000000
- http://ytyaru.hatenablog.com/entry/2019/12/26/000000
- http://ytyaru.hatenablog.com/entry/2019/12/24/000000
- 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
コード抜粋
- DB作成
- テーブル作成
- モデル作成
- モデルからinsert
1. DB作成
QSqlDatabase _db = QSqlDatabase::addDatabase("QSQLITE", "Memo"); QString dbPath = QDir(QApplication::applicationDirPath()).filePath("Memo.sqlite3"); _db.setDatabaseName(dbPath);
2. テーブル作成
QSqlDatabase db = QSqlDatabase::database("Memo"); QSqlQuery query(db); query.exec(tr("create table Memo(id INTEGER PRIMARY KEY AUTOINCREMENT, Memo TEXT, Created TEXT)")); query.exec(tr("insert into Memo(Memo,Created) values('メモ内容だよ', '1999-12-31 23:59:59')")); query.exec(tr("select * from Memo")); while (query.next()) { qDebug() << query.value(0) << "|" << query.value(1) << "|" << query.value(2); }
3. モデル作成
QSqlTableModel model(nullptr, db); qDebug() << model.tableName(); qDebug() << "columnCount: " << model.columnCount();
4. モデルからinsert
QSqlField fMemo("Memo"); fMemo.setValue("追記したメモ"); QSqlField fCreated("Created"); fCreated.setValue("1999-12-31 23:59:59"); QSqlRecord record; record.append(fMemo); record.append(fCreated); model.insertRecord(0, record); model.submitAll();
所感
Fieldに関してはテーブル定義がすでにあるはずなので、情報を取得できそうだが。