Qt5学習。QtでSQLite3を使うラッパクラスを作ってみた2。
- SQL実行時エラーをqDebugで表示するようにした
- 複数行のSQLを実行するメソッドを作った:
void Query(QStringList)
- https://github.com/ytyaru/pp.Qt.Widget.QtSqliteDb.20181128120000
- https://github.com/ytyaru/Cpp.Qt.Widget.QSql.SQLite3.Transaction.20181128070000
- https://github.com/ytyaru/Cpp.Qt.Widget.QSql.SQLite3.Class.20181127180000
- https://github.com/ytyaru/Cpp.Qt.Widget.QSql.SQLite3.Class.20181127170000
- https://github.com/ytyaru/Cpp.Qt.Widget.QSql.SQLite3.Class.20181127160000
- https://github.com/ytyaru/Cpp.Qt.Widget.QSql.SQLite3.Class.20181127130000
qtsqlitedb.cpp
QSqlQuery QtSqliteDb::Query(QString query)
{
QSqlDatabase db = QSqlDatabase::database(this->dbName);
db.transaction();
try {
QSqlQuery q(db);
q.exec(query);
QSqlError err = q.lastError();
if (!err.text().trimmed().isEmpty()) { qDebug() << "SQLieteError: " << err.text(); }
db.commit();
qDebug() << "QSqlDatabase::commit(): " << query;
return q;
} catch (...) {
qDebug() << "QSqlDatabase::rollback(): " << query;
db.rollback();
}
}
QSqlError
というやつ。
引数がQString
でなくQStringList
のメソッド。戻り値がない。複数のInsert文を実行することを想定。
void QtSqliteDb::Query(QStringList queries)
{
QSqlDatabase db = QSqlDatabase::database(this->dbName);
db.transaction();
try {
QSqlQuery q(db);
foreach (QString query, queries) {
q.exec(query);
QSqlError err = q.lastError();
if (!err.text().trimmed().isEmpty()) { qDebug() << "SQLieteError: " << err.text() << "\n" << query << ": "; }
}
qDebug() << "QSqlDatabase::commit()" << queries;
db.commit();
} catch (...) {
qDebug() << "QSqlDatabase::rollback()" << queries;
db.rollback();
}
}
- Raspberry Pi 3 Model B+
- Raspbian GNU/Linux 9.0 (stretch) 2018-06-27
- Qt 5.7.1
- Raspbian GNU/Linux 9.0 (stretch) 2018-06-27
このソフトウェアはCC0ライセンスである。
ライブラリ | ライセンス | ソースコード |
---|---|---|
Qt | LGPL | GitHub |