32 #include <QSqlDatabase>
35 #include <QMutexLocker>
39 QSet<QString> LC::Util::DBLock::LockedBases_;
40 QMutex LC::Util::DBLock::LockedMutex_;
43 : Database_ (database)
52 if (Good_ ? !Database_.commit () : !Database_.rollback ())
53 DumpError (Database_.lastError ());
56 QMutexLocker locker (&LockedMutex_);
57 LockedBases_.remove (Database_.connectionName ());
64 QMutexLocker locker (&LockedMutex_);
65 const auto& conn = Database_.connectionName ();
66 if (LockedBases_.contains (conn))
71 if (!Database_.transaction ())
73 DumpError (Database_.lastError ());
74 throw std::runtime_error (
"Could not start transaction");
86 qWarning () << lastError.text () <<
"|"
92 qWarning () <<
"query:" << lastQuery.lastQuery ();
93 DumpError (lastQuery.lastError ());
94 qWarning () <<
"bound values:" << lastQuery.boundValues ();
103 throw std::runtime_error (
"Query execution failed.");