7 #include <QLoggingCategory> 10 #include <QJsonObject> 14 #include <QtSql/QSqlQuery> 15 #include <QtSql/QSqlError> 16 #include <QtSql/QSqlRecord> 18 Q_LOGGING_CATEGORY(C_SQL,
"cutelyst.utils.sql", QtWarningMsg)
22 QVariantHash Sql::queryToHashObject(
QSqlQuery &query)
27 const int columns = record.
count();
28 for (
int i = 0; i < columns; ++i) {
35 QVariantList Sql::queryToHashList(
QSqlQuery &query)
39 const int columns = record.
count();
41 for (
int i = 0; i < columns; ++i) {
45 while (query.
next()) {
47 for (
int i = 0; i < columns; ++i) {
48 line.insert(cols.
at(i), query.
value(i));
55 QVariantMap Sql::queryToMapObject(
QSqlQuery &query)
60 const int columns = record.
count();
61 for (
int i = 0; i < columns; ++i) {
73 const int columns = record.
count();
74 for (
int i = 0; i < columns; ++i) {
81 QVariantList Sql::queryToMapList(
QSqlQuery &query)
85 const int columns = record.
count();
87 for (
int i = 0; i < columns; ++i) {
91 while (query.
next()) {
93 for (
int i = 0; i < columns; ++i) {
94 line.insert(cols.
at(i), query.
value(i));
105 const int columns = record.
count();
107 for (
int i = 0; i < columns; ++i) {
111 while (query.
next()) {
113 for (
int i = 0; i < columns; ++i) {
121 QVariantList Sql::queryToList(
QSqlQuery &query)
126 while (query.
next()) {
128 for (
int i = 0; i < columns; ++i) {
129 line.append(query.
value(i));
142 while (query.
next()) {
144 for (
int i = 0; i < columns; ++i) {
158 int index = record.
indexOf(key);
160 qCCritical(C_SQL) <<
"Field Name " << key <<
161 " not found in result set";
165 const int columns = record.
count();
168 for (
int i = 0; i < columns; ++i) {
172 while (query.
next()) {
174 for (
int i = 0; i < columns; ++i) {
176 line.insert(cols.
at(i), query.
value(i));
191 int index = record.
indexOf(key);
193 qCCritical(C_SQL) <<
"Field Name " << key <<
194 " not found in result set";
198 const int columns = record.
count();
201 for (
int i = 0; i < columns; ++i) {
205 while (query.
next()) {
207 for (
int i = 0; i < columns; ++i) {
224 if (it.value().isNull()) {
233 if (it.value().isNull()) {
246 sqlQuery.setForwardOnly(forwardOnly);
247 if (!sqlQuery.prepare(query)) {
248 qCCritical(C_SQL) <<
"Failed to prepare query:" << query << sqlQuery.lastError().databaseText();
256 sqlQuery.setForwardOnly(forwardOnly);
257 if (!sqlQuery.prepare(query)) {
258 qCCritical(C_SQL) <<
"Failed to prepare query:" << query << sqlQuery.lastError().databaseText();
283 Sql::Transaction::~Transaction()
285 if (m_transactionRunning) {
290 bool Sql::Transaction::transaction()
const 292 return m_transactionRunning;
295 bool Sql::Transaction::commit()
298 m_transactionRunning = !m_db.commit();
299 return !m_transactionRunning;
302 bool Sql::Transaction::rollback()
304 m_transactionRunning =
false;
305 return m_db.rollback();
QString fieldName(int index) const const
QMap::const_iterator constBegin() const const
const T & at(int i) const const
QSqlDatabase database(const QString &connectionName, bool open)
QJsonValue fromVariant(const QVariant &variant)
void append(const T &value)
QVariant value(int index) const const
int indexOf(const QString &name) const const
void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
QMap::const_iterator constEnd() const const
The Cutelyst namespace holds all public Cutelyst API.
void append(const QJsonValue &value)
QSqlRecord record() const const
QVariant fromValue(const T &value)
QThread * currentThread()
Transaction(const QString &databaseName=QString())
QString toString() const const
QJsonObject::iterator insert(const QString &key, const QJsonValue &value)