chengxr 1 year ago
parent
commit
8937d48228
100 changed files with 13378 additions and 0 deletions
  1. 85 0
      QFD/EasyQtSql/EasyQtSql.h
  2. 18 0
      QFD/EasyQtSql/EasyQtSql.pri
  3. 29 0
      QFD/EasyQtSql/EasyQtSql.pro
  4. 62 0
      QFD/EasyQtSql/EasyQtSql_DBException.h
  5. 149 0
      QFD/EasyQtSql/EasyQtSql_DeleteQuery.h
  6. 151 0
      QFD/EasyQtSql/EasyQtSql_InsertQuery.h
  7. 114 0
      QFD/EasyQtSql/EasyQtSql_NonQueryResult.h
  8. 103 0
      QFD/EasyQtSql/EasyQtSql_ParamDirectionWrapper.h
  9. 187 0
      QFD/EasyQtSql/EasyQtSql_PreparedQuery.h
  10. 865 0
      QFD/EasyQtSql/EasyQtSql_QueryResult.h
  11. 188 0
      QFD/EasyQtSql/EasyQtSql_SqlFactory.h
  12. 511 0
      QFD/EasyQtSql/EasyQtSql_Transaction.h
  13. 189 0
      QFD/EasyQtSql/EasyQtSql_UpdateQuery.h
  14. 142 0
      QFD/EasyQtSql/EasyQtSql_Util.h
  15. 31 0
      QFD/EasyQtSql/Tests/Shared/Shared.h
  16. 14 0
      QFD/EasyQtSql/Tests/TestDDL/TestDDL.pro
  17. 175 0
      QFD/EasyQtSql/Tests/TestDDL/tst_testddl.cpp
  18. 16 0
      QFD/EasyQtSql/Tests/TestDelete/TestDelete.pro
  19. 339 0
      QFD/EasyQtSql/Tests/TestDelete/tst_testdelete.cpp
  20. 11 0
      QFD/EasyQtSql/Tests/TestInsert/TestInsert.pro
  21. 214 0
      QFD/EasyQtSql/Tests/TestInsert/tst_testinsert.cpp
  22. 14 0
      QFD/EasyQtSql/Tests/TestSelect/TestSelect.pro
  23. 740 0
      QFD/EasyQtSql/Tests/TestSelect/tst_testselect.cpp
  24. 11 0
      QFD/EasyQtSql/Tests/TestUpdate/TestUpdate.pro
  25. 318 0
      QFD/EasyQtSql/Tests/TestUpdate/tst_testupdate.cpp
  26. 8 0
      QFD/EasyQtSql/Tests/Tests.pro
  27. 0 0
      QFD/EasyQtSql/docs/.nojekyll
  28. 209 0
      QFD/EasyQtSql/docs/_easy_qt_sql_8h.htm
  29. 21 0
      QFD/EasyQtSql/docs/_easy_qt_sql_8h.js
  30. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql_8h_source.htm
  31. 138 0
      QFD/EasyQtSql/docs/_easy_qt_sql___d_b_exception_8h.htm
  32. 5 0
      QFD/EasyQtSql/docs/_easy_qt_sql___d_b_exception_8h.js
  33. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___d_b_exception_8h_source.htm
  34. 139 0
      QFD/EasyQtSql/docs/_easy_qt_sql___delete_query_8h.htm
  35. 5 0
      QFD/EasyQtSql/docs/_easy_qt_sql___delete_query_8h.js
  36. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___delete_query_8h_source.htm
  37. 139 0
      QFD/EasyQtSql/docs/_easy_qt_sql___insert_query_8h.htm
  38. 5 0
      QFD/EasyQtSql/docs/_easy_qt_sql___insert_query_8h.js
  39. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___insert_query_8h_source.htm
  40. 138 0
      QFD/EasyQtSql/docs/_easy_qt_sql___non_query_result_8h.htm
  41. 5 0
      QFD/EasyQtSql/docs/_easy_qt_sql___non_query_result_8h.js
  42. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___non_query_result_8h_source.htm
  43. 147 0
      QFD/EasyQtSql/docs/_easy_qt_sql___param_direction_wrapper_8h.htm
  44. 8 0
      QFD/EasyQtSql/docs/_easy_qt_sql___param_direction_wrapper_8h.js
  45. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___param_direction_wrapper_8h_source.htm
  46. 140 0
      QFD/EasyQtSql/docs/_easy_qt_sql___prepared_query_8h.htm
  47. 5 0
      QFD/EasyQtSql/docs/_easy_qt_sql___prepared_query_8h.js
  48. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___prepared_query_8h_source.htm
  49. 139 0
      QFD/EasyQtSql/docs/_easy_qt_sql___query_result_8h.htm
  50. 5 0
      QFD/EasyQtSql/docs/_easy_qt_sql___query_result_8h.js
  51. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___query_result_8h_source.htm
  52. 142 0
      QFD/EasyQtSql/docs/_easy_qt_sql___sql_factory_8h.htm
  53. 7 0
      QFD/EasyQtSql/docs/_easy_qt_sql___sql_factory_8h.js
  54. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___sql_factory_8h_source.htm
  55. 148 0
      QFD/EasyQtSql/docs/_easy_qt_sql___transaction_8h.htm
  56. 6 0
      QFD/EasyQtSql/docs/_easy_qt_sql___transaction_8h.js
  57. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___transaction_8h_source.htm
  58. 139 0
      QFD/EasyQtSql/docs/_easy_qt_sql___update_query_8h.htm
  59. 5 0
      QFD/EasyQtSql/docs/_easy_qt_sql___update_query_8h.js
  60. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___update_query_8h_source.htm
  61. 138 0
      QFD/EasyQtSql/docs/_easy_qt_sql___util_8h.htm
  62. 5 0
      QFD/EasyQtSql/docs/_easy_qt_sql___util_8h.js
  63. 92 0
      QFD/EasyQtSql/docs/_easy_qt_sql___util_8h_source.htm
  64. 105 0
      QFD/EasyQtSql/docs/_mainpage_8dox.htm
  65. 143 0
      QFD/EasyQtSql/docs/annotated.htm
  66. 19 0
      QFD/EasyQtSql/docs/annotated_dup.js
  67. BIN
      QFD/EasyQtSql/docs/bc_s.png
  68. BIN
      QFD/EasyQtSql/docs/bdwn.png
  69. 115 0
      QFD/EasyQtSql/docs/class_d_b_exception-members.htm
  70. 312 0
      QFD/EasyQtSql/docs/class_d_b_exception.htm
  71. 11 0
      QFD/EasyQtSql/docs/class_d_b_exception.js
  72. BIN
      QFD/EasyQtSql/docs/class_d_b_exception.png
  73. 125 0
      QFD/EasyQtSql/docs/class_database-members.htm
  74. 872 0
      QFD/EasyQtSql/docs/class_database.htm
  75. 21 0
      QFD/EasyQtSql/docs/class_database.js
  76. BIN
      QFD/EasyQtSql/docs/class_database.png
  77. 112 0
      QFD/EasyQtSql/docs/class_delete_query-members.htm
  78. 311 0
      QFD/EasyQtSql/docs/class_delete_query.htm
  79. 8 0
      QFD/EasyQtSql/docs/class_delete_query.js
  80. 115 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_d_b_exception-members.htm
  81. 312 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_d_b_exception.htm
  82. 11 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_d_b_exception.js
  83. BIN
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_d_b_exception.png
  84. 125 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_database-members.htm
  85. 872 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_database.htm
  86. 21 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_database.js
  87. BIN
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_database.png
  88. 112 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_delete_query-members.htm
  89. 311 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_delete_query.htm
  90. 8 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_delete_query.js
  91. 111 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_insert_query-members.htm
  92. 264 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_insert_query.htm
  93. 7 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_insert_query.js
  94. 118 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_non_query_result-members.htm
  95. 433 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_non_query_result.htm
  96. 14 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_non_query_result.js
  97. 117 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_prepared_query-members.htm
  98. 471 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_prepared_query.htm
  99. 13 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_prepared_query.js
  100. 163 0
      QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_query_result-members.htm

+ 85 - 0
QFD/EasyQtSql/EasyQtSql.h

@@ -0,0 +1,85 @@
+#ifndef EASYQTSQL_H
+#define EASYQTSQL_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+/*!
+\file
+\brief Main EasyQtSql header file
+
+To use all the EasyQtSql features just include this header file into your project
+\warning Please use EasyQtSql.h file only! You should never include any of EasyQtSql_*.h files.
+*/
+
+#include <QtSql>
+
+/*!
+   \brief Easy SQL data access helper for QtSql
+   \author Alexey <kramolnic> Kramin
+   \version 1.0
+   \date November 2018
+   \verbinclude License.txt
+
+*/
+
+namespace EasyQtSql
+{
+
+/*!
+  \brief Undefine to disable EasyQtSql exceptions (DBException) globally
+ */
+#define DB_EXCEPTIONS_ENABLED
+//#undef DB_EXCEPTIONS_ENABLED
+
+/// \cond
+#define EASY_QT_SQL_MAIN
+/// \endcond
+
+//SqlFactory (DB connection manager)
+#include "EasyQtSql_SqlFactory.h"
+
+//Generic classes
+#include "EasyQtSql_DBException.h"
+#include "EasyQtSql_ParamDirectionWrapper.h"
+
+//Select query and query results
+#include "EasyQtSql_NonQueryResult.h"
+#include "EasyQtSql_QueryResult.h"
+#include "EasyQtSql_PreparedQuery.h"
+
+//Insert/Update/Delete (CUD) operations
+#include "EasyQtSql_InsertQuery.h"
+#include "EasyQtSql_UpdateQuery.h"
+#include "EasyQtSql_DeleteQuery.h"
+
+//Transaction helper
+#include "EasyQtSql_Transaction.h"
+
+#undef EASY_QT_SQL_MAIN
+
+}
+
+#endif // EASYQTSQL_H

+ 18 - 0
QFD/EasyQtSql/EasyQtSql.pri

@@ -0,0 +1,18 @@
+INCLUDEPATH += $$PWD
+
+SUBDIRS += \
+    $$PWD/EasyQtSql.pro
+
+HEADERS += \
+    $$PWD/EasyQtSql.h \
+    $$PWD/EasyQtSql_DBException.h \
+    $$PWD/EasyQtSql_DeleteQuery.h \
+    $$PWD/EasyQtSql_InsertQuery.h \
+    $$PWD/EasyQtSql_NonQueryResult.h \
+    $$PWD/EasyQtSql_ParamDirectionWrapper.h \
+    $$PWD/EasyQtSql_PreparedQuery.h \
+    $$PWD/EasyQtSql_QueryResult.h \
+    $$PWD/EasyQtSql_SqlFactory.h \
+    $$PWD/EasyQtSql_Transaction.h \
+    $$PWD/EasyQtSql_UpdateQuery.h \
+    $$PWD/EasyQtSql_Util.h

+ 29 - 0
QFD/EasyQtSql/EasyQtSql.pro

@@ -0,0 +1,29 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2018-07-11T20:57:55
+#
+#-------------------------------------------------
+QT += sql
+QT -= gui
+
+TEMPLATE = app
+
+HEADERS += \
+    EasyQtSql.h \
+    EasyQtSql_Transaction.h \
+    EasyQtSql_NonQueryResult.h \
+    EasyQtSql_QueryResult.h \
+    EasyQtSql_DBException.h \
+    EasyQtSql_InsertQuery.h \
+    EasyQtSql_DeleteQuery.h \
+    EasyQtSql_PreparedQuery.h \
+    EasyQtSql_ParamDirectionWrapper.h \
+    EasyQtSql_UpdateQuery.h \
+    EasyQtSql_SqlFactory.h \
+    EasyQtSql_Util.h
+
+DISTFILES += \
+    EasyQtSql.pri
+
+SOURCES += \
+    dummy.cpp

+ 62 - 0
QFD/EasyQtSql/EasyQtSql_DBException.h

@@ -0,0 +1,62 @@
+#ifndef EASYQTSQL_DBEXCEPTION_H
+#define EASYQTSQL_DBEXCEPTION_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtSql>
+
+#endif
+
+/*!
+ * \brief Exception class for SQL errors handling
+ */
+class DBException : public QException
+{
+   friend class Database;
+   friend class Transaction;
+   friend class PreparedQuery;
+   friend class InsertQuery;
+   friend class UpdateQuery;
+   friend class DeleteQuery;
+
+public:
+   const QSqlError lastError;
+   const QString   lastQuery;
+
+private:
+   explicit DBException (const QSqlQuery &q)
+    : lastError(q.lastError())
+    , lastQuery(q.lastQuery())
+   { }
+
+   explicit DBException (const QSqlDatabase &db)
+    : lastError(db.lastError())
+   { }
+};
+
+#endif // EASYQTSQL_DBEXCEPTION_H

+ 149 - 0
QFD/EasyQtSql/EasyQtSql_DeleteQuery.h

@@ -0,0 +1,149 @@
+#ifndef EASYQTSQL_DELETEQUERY_H
+#define EASYQTSQL_DELETEQUERY_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtSql>
+#include "EasyQtSql_NonQueryResult.h"
+
+#endif
+
+/*!
+\brief QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution.
+*/
+class  DeleteQuery
+{
+public:
+   DeleteQuery(const QString &table, const QSqlDatabase &db)
+     : m_query(db)
+     , m_table(table)
+   {   }
+
+   /*!
+   \brief Executes conditional <em>DELETE FROM table WHERE expr</em> query
+
+   \code
+   //DELETE FROM table WHERE 1=0
+   t.deleteFrom("table").where("1=0");
+   \endcode
+   */
+   NonQueryResult where(const QString &expr)
+   {
+      const QString &sql = createSql(m_table, expr);
+
+      const bool res = m_query.exec(sql);
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+      if (!res)
+         throw DBException(m_query);
+
+#endif
+
+      return NonQueryResult(m_query);
+   }
+
+   /*!
+   \brief Executes conditional <em>DELETE FROM table WHERE expr</em> query with parameter binding
+
+   The method supports variable count of QVariant parameters.
+   Parameters are bound with <em>QSqlQuery::addBindValue</em>.
+   \code
+   //DELETE FROM table WHERE a=1 AND b=2
+   t.deleteFrom("table").where("a=? AND b=?", 1, 2);
+   \endcode
+   */
+   NonQueryResult where(const QString &expr, const QVariant &last)
+   {
+      m_params.append(last);
+
+      const QString &sql = createSql(m_table, expr);
+
+      m_query.prepare(sql);
+
+      for (int i = 0; i < m_params.count(); ++i)
+      {
+         m_query.addBindValue(m_params.at(i));
+      }
+
+      const bool res = m_query.exec();
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+      if (!res)
+         throw DBException(m_query);
+
+#endif
+
+      return NonQueryResult(m_query);
+   }
+
+   template <typename... Rest> NonQueryResult where(const QString &expr, const QVariant &first, const Rest&... rest)
+   {
+      m_params.append(first);
+      return where(expr, rest...);
+   }
+
+   /*!
+   \brief Executes unconditional <em>DELETE FROM table</em> query
+
+   \code
+   //DELETE FROM table
+   t.deleteFrom("table").exec();
+   \endcode
+   */
+   NonQueryResult exec()
+   {
+      const QString &sql = createSql(m_table);
+
+      const bool res = m_query.exec(sql);
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+      if (!res)
+         throw DBException(m_query);
+
+#endif
+
+      return NonQueryResult(m_query);
+   }
+
+
+private:
+   QSqlQuery m_query;
+   QString m_table;
+   QVariantList m_params;
+
+   static QString createSql(const QString &table, const QString &expr = "1=1")
+   {
+      return QString("DELETE FROM %0 WHERE %1").arg(table).arg(expr);
+   }
+
+};
+
+#endif // EASYQTSQL_DELETEQUERY_H

+ 151 - 0
QFD/EasyQtSql/EasyQtSql_InsertQuery.h

@@ -0,0 +1,151 @@
+#ifndef EASYQTSQL_INSERTQUERY_H
+#define EASYQTSQL_INSERTQUERY_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtSql>
+#include "EasyQtSql_NonQueryResult.h"
+
+#endif
+
+/*!
+\brief QSqlQuery wrapper for <em>INSERT INTO table</em> query execution.
+*/
+class  InsertQuery
+{
+public:
+   InsertQuery(const QString &table, const QSqlDatabase &db)
+     : m_table(table)
+     , q(db)
+   {   }
+
+   /*!
+   \brief Adds list of insert-values to INSERT INTO table(...) VALUES ... query
+
+   The method supports variable count of QVariant parameters.
+   Parameters are bound with <em>QSqlQuery::addBindValue</em>.
+   \code
+   NonQueryResult res = t.insertInto("table (a, b, c, d)")
+         .values(1, 2, 3, "a")
+         .values(4, 5, 6, "b")
+         .values(7, 8, 9, "c")
+         .exec();
+   \endcode
+   */
+   InsertQuery &values(const QVariant& t)
+   {
+      m_args.append(t);
+
+      if (m_insertArray.isEmpty())
+      {
+         m_insertArray.resize(m_args.count());
+      }
+      else
+      {
+         Q_ASSERT(m_insertArray.size() == m_args.size());
+      }
+
+      for (int i = 0; i < m_args.count(); ++i)
+      {
+         m_insertArray[i].append(m_args.at(i));
+      }
+
+      m_args.clear();
+
+      return *this;
+   }
+
+   template <typename... Rest> InsertQuery &values(const QVariant &first, const Rest&... rest)
+   {
+      m_args.append(first);
+
+      return values(rest...);
+   }
+
+   /*!
+   \brief Executes prepared InsertQuery with insert values list
+   */
+   NonQueryResult exec()
+   {
+      QString sql = QLatin1String("INSERT INTO ");
+      sql.append(m_table);
+      sql.append(QLatin1String(" VALUES ("));
+
+      QStringList lst;
+      for (int i = 0; i < m_insertArray.count(); ++i)
+      {
+         lst.append(QLatin1String("?"));
+      }
+
+      sql.append(lst.join(QLatin1String(",")));
+      sql.append(QLatin1String(")"));
+
+      q.prepare(sql);
+
+      bool res = false;
+
+      if (m_insertArray.count() > 0 && m_insertArray[0].count() > 1)
+      {
+         for (int i = 0; i < m_insertArray.count(); ++i)
+         {
+            q.addBindValue(m_insertArray.at(i));
+         }
+
+         res = q.execBatch();
+      }
+      else
+      {
+         for (int i = 0; i < m_insertArray.count(); ++i)
+         {
+            q.addBindValue(m_insertArray.at(i).first());
+         }
+
+         res = q.exec();
+      }
+
+      m_args.clear();
+      m_insertArray.clear();
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+      if (!res)
+         throw DBException(q);
+
+#endif
+
+      return NonQueryResult(q);
+   }
+
+private:
+   QString m_table;
+   QSqlQuery q;
+   QVariantList m_args;
+   QVector<QVariantList> m_insertArray;
+};
+
+#endif // EASYQTSQL_INSERTQUERY_H

+ 114 - 0
QFD/EasyQtSql/EasyQtSql_NonQueryResult.h

@@ -0,0 +1,114 @@
+#ifndef EASYQTSQL_NONQUERYRESULT_H
+#define EASYQTSQL_NONQUERYRESULT_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtSql>
+
+#endif
+
+/*!
+ * \brief QSqlQuery wrapper for non-select query results reading
+ */
+class NonQueryResult
+{
+   friend class Database;
+   friend class Transaction;   
+   friend class InsertQuery;
+   friend class UpdateQuery;
+   friend class DeleteQuery;
+
+public:
+
+   /*!
+   \brief Returns reference on wrapped QSqlQuery.
+   */
+   QSqlQuery &unwrappedQuery()
+   {
+      return m_query;
+   }
+
+   /*!
+   \brief Returns the number of rows affected by the result's SQL statement, or -1 if it cannot be determined.
+
+   Wrapper over QSqlQuery::numRowsAffected()
+   */
+   int numRowsAffected() const
+   {
+      return m_query.numRowsAffected();
+   }
+
+   /*!
+   \brief Returns the object ID of the most recent inserted row if the database supports it.
+
+   Wrapper over QSqlQuery::lastInsertId()
+   */
+   QVariant lastInsertId() const
+   {
+      return m_query.lastInsertId();
+   }
+
+   /*!
+   \brief Returns error information about the last error (if any) that occurred with this query.
+
+   Wrapper over QSqlQuery::lastError()
+   */
+   QSqlError lastError() const
+   {
+      return m_query.lastError();
+   }
+
+   /*!
+   \brief Returns the text of the current query being used, or an empty string if there is no current query text.
+
+   Wrapper over QSqlQuery::lastQuery()
+   */
+   QString lastQuery() const
+   {
+      return m_query.lastQuery();
+   }
+
+   /*!
+   \brief Returns the last query that was successfully executed.
+
+   Wrapper over QSqlQuery::executedQuery()
+   */
+   QString executedQuery() const
+   {
+      return m_query.executedQuery();
+   }
+
+private:
+   explicit NonQueryResult(const QSqlQuery &q)
+    : m_query(q)
+   { }
+
+   QSqlQuery m_query;
+};
+
+#endif // EASYQTSQL_NONQUERYRESULT_H

+ 103 - 0
QFD/EasyQtSql/EasyQtSql_ParamDirectionWrapper.h

@@ -0,0 +1,103 @@
+#ifndef EASYQTSQL_PARAMETERWRAPPER_H
+#define EASYQTSQL_PARAMETERWRAPPER_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtCore>
+
+#endif
+
+/*!
+ * \brief Base parameters wrapper struct
+ *
+ * The ParamDirectionWrapper struct is pure-virtual
+ */
+struct ParamDirectionWrapper
+{
+   ParamDirectionWrapper(const QVariant &val, const QString &aliasName)
+    : value(val)
+    , alias(aliasName.trimmed())
+   { }
+
+   virtual ~ParamDirectionWrapper() {}
+
+   const QVariant value;
+   const QString  alias;
+
+   /*!
+    * \brief Protection against instantiating the class
+    */
+   virtual void doesNothing() const = 0;
+};
+
+/*!
+ * \brief Input SQL parameters wrapper
+ */
+struct  In : public ParamDirectionWrapper
+{
+   In(const QVariant &value, const QString &alias = QString())
+    : ParamDirectionWrapper(value, alias.trimmed().toLower())
+   { }
+
+   /*!
+    * \brief Does nothing
+    */
+   virtual void doesNothing() const override {}
+};
+
+/*!
+ * \brief Output SQL parameters wrapper
+ */
+struct  Out : public ParamDirectionWrapper
+{
+   explicit Out(const QString &alias)
+    : ParamDirectionWrapper(QVariant(), alias)
+   { }
+
+   /*!
+    * \brief Does nothing
+    */
+   virtual void doesNothing() const override {}
+};
+
+/*!
+ * \brief Bidirectional SQL parameters wrapper
+ */
+struct  InOut : public ParamDirectionWrapper
+{
+   InOut(const QVariant &value, const QString &alias)
+    : ParamDirectionWrapper(value, alias)
+   { }
+
+   /*!
+    * \brief Does nothing
+    */
+   virtual void doesNothing() const override {}
+};
+
+#endif // EASYQTSQL_PARAMETERWRAPPER_H

+ 187 - 0
QFD/EasyQtSql/EasyQtSql_PreparedQuery.h

@@ -0,0 +1,187 @@
+#ifndef EASYQTSQL_PREPAREDQUERY_H
+#define EASYQTSQL_PREPAREDQUERY_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtSql>
+#include "EasyQtSql_QueryResult.h"
+#include "EasyQtSql_ParamDirectionWrapper.h"
+
+#endif
+
+/*!
+ \brief Class for query preparation and execution
+
+ \code
+
+   //SELECT a, b, c, d FROM table WHERE a=? AND b=?
+      PreparedQuery query = t.prepare("SELECT a, b, c, d FROM table WHERE a=? AND b=?");
+
+   //parameters a and b are bound with values 1 and 2, query executed
+      QueryResult res = query.exec(1, 2);
+
+      while(res.next())
+      {
+         //fetch data here
+      }
+
+   //parameters a and b are bound with values 3 and 4, query executed
+      res = query.exec(3, 4);
+
+      while(res.next())
+      {
+         //fetch data here
+      }
+
+ \endcode
+ */
+class  PreparedQuery
+{
+public:
+   PreparedQuery(const QString &stmt, const QSqlDatabase &db, bool forwardOnly = true)
+      :m_query(db)
+   {
+      m_query.setForwardOnly(forwardOnly);
+      m_query.prepare(stmt);
+   }
+
+   QueryResult &exec()
+   {
+      m_index = 0;
+
+      const bool res = m_query.exec();
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+      if (!res)
+         throw DBException(m_query);
+
+#endif
+
+      m_result = QueryResult(m_query, m_aliases);
+
+      m_aliases.clear();
+
+      return m_result;
+   }
+
+   QueryResult &exec(const QVariant &bindValue)
+   {
+      m_query.bindValue(m_index, bindValue);
+
+      return exec();
+   }
+
+   QueryResult &exec(const In &paramWrapper)
+   {
+      m_query.bindValue(m_index, paramWrapper.value, QSql::In);
+
+      addAliasIfSet(paramWrapper, m_index);
+
+      return exec();
+   }
+
+   QueryResult &exec(const Out &paramWrapper)
+   {
+      m_query.bindValue(m_index, paramWrapper.value, QSql::Out);
+
+      addAliasIfSet(paramWrapper, m_index);
+
+      return exec();
+   }
+
+   QueryResult &exec(const InOut &paramWrapper)
+   {
+      m_query.bindValue(m_index, paramWrapper.value, QSql::InOut);
+
+      addAliasIfSet(paramWrapper, m_index);
+
+      return exec();
+   }
+
+   template <typename... Rest> QueryResult &exec(const QVariant &bindValue, const Rest&... rest)
+   {
+      m_query.bindValue(m_index, bindValue);
+
+      m_index++;
+
+      return exec(rest...);
+   }
+
+   template <typename... Rest> QueryResult &exec(const In &paramWrapper, const Rest&... rest)
+   {
+      m_query.bindValue(m_index, paramWrapper.value, QSql::In);
+
+      addAliasIfSet(paramWrapper, m_index);
+
+      m_index++;
+
+      return exec(rest...);
+   }
+
+   template <typename... Rest> QueryResult &exec(const Out &paramWrapper, const Rest&... rest)
+   {
+      m_query.bindValue(m_index, paramWrapper.value, QSql::Out);
+
+      addAliasIfSet(paramWrapper, m_index);
+
+      m_index++;
+
+      return exec(rest...);
+   }
+
+   template <typename... Rest> QueryResult &exec(const InOut &paramWrapper, const Rest&... rest)
+   {
+      m_query.bindValue(m_index, paramWrapper.value, QSql::InOut);
+
+      addAliasIfSet(paramWrapper, m_index);
+
+      m_index++;
+
+      return exec(rest...);
+   }
+
+private:
+   QSqlQuery m_query;
+
+   int m_index = 0;
+
+   QueryResult m_result;
+
+   QMap<QString, int> m_aliases;
+
+   void addAliasIfSet(const ParamDirectionWrapper &paramWrapper, int index)
+   {
+      if (!paramWrapper.alias.isEmpty())
+      {
+         m_aliases[paramWrapper.alias] = index;
+      }
+   }
+};
+
+#endif // EASYQTSQL_PREPAREDQUERY_H

+ 865 - 0
QFD/EasyQtSql/EasyQtSql_QueryResult.h

@@ -0,0 +1,865 @@
+#ifndef EASYQTSQL_QUERYRESULT_H
+#define EASYQTSQL_QUERYRESULT_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtSql>
+#include "EasyQtSql_NonQueryResult.h"
+
+#endif
+
+/*!
+\brief QSqlQuery wrapper with handy data fetch methods.
+*/
+class  QueryResult
+{
+   friend class Database;
+   friend class Transaction;
+   friend class PreparedQuery;   
+
+public:
+
+   /*!
+   \brief Returns reference on wrapped QSqlQuery.
+   */
+   QSqlQuery &unwrappedQuery()
+   {
+      return m_query;
+   }
+
+   /*!
+   \brief Retrieves the next record in the result, if available, and positions the query on the retrieved record.
+
+   Wrapper over QSqlQuery::next()
+   */
+   bool next()
+   {
+      bool res = m_query.next();
+
+      if ( ! m_firstRowFetched)
+      {
+         m_fieldNames.clear();
+
+         QSqlRecord record = m_query.record();
+
+         for (int i = 0; i < record.count(); ++i)
+         {
+            m_fieldNames.append(record.fieldName(i));
+         }
+
+         m_firstRowFetched = true;
+      }
+
+      return res;
+   }
+
+   /*!
+   \brief Retrieves the previous record in the result, if available, and positions the query on the retrieved record.
+
+   Wrapper over QSqlQuery::previous()
+   */
+   bool previous()
+   {
+      return m_query.previous();
+   }
+
+   /*!
+   \brief Discards the current result set and navigates to the next if available (if database is capable of returning multiple result sets)
+
+   Wrapper over QSqlQuery::nextResult()
+   */
+   bool nextResult()
+   {
+      m_firstRowFetched = false;
+
+      bool res = m_query.nextResult();
+
+      return res;
+   }
+
+   /*!
+   \brief Retrieves the first record in the result, if available, and positions the query on the retrieved record.
+
+   Wrapper over QSqlQuery::first()
+   */
+   bool first()
+   {
+      return m_query.first();
+   }
+
+   /*!
+   \brief Retrieves the last record in the result, if available, and positions the query on the retrieved record.
+
+   Wrapper over QSqlQuery::last()
+   */
+   bool last()
+   {
+      return m_query.last();
+   }
+
+   /*!
+   \brief Retrieves the record at position index, if available, and positions the query on the retrieved record.
+
+   Wrapper over QSqlQuery::seek()
+   */
+   bool seek(int index, bool relative = false)
+   {
+      return m_query.seek(index, relative);
+   }
+
+   /*!
+   \brief Returns the current internal position of the query. The first record is at position zero.
+   \return If the position is invalid, the function returns QSql::BeforeFirstRow or QSql::AfterLastRow, which are special negative values.
+
+   Wrapper over QSqlQuery::at()
+   */
+   int at() const
+   {
+      return m_query.at();
+   }
+
+   /*!
+   \brief Returns true if the query is active. An active QSqlQuery is one that has been exec()'d successfully but not yet finished with.
+
+   Wrapper over QSqlQuery::isActive()
+   */
+   bool isActive() const
+   {
+      return m_query.isActive();
+   }
+
+   /*!
+   \brief Returns true if the query is currently positioned on a valid record; otherwise returns false.
+
+   Wrapper over QSqlQuery::isValid()
+   */
+   bool isValid() const
+   {
+      return m_query.isValid();
+   }
+
+   /*!
+   \brief Returns true if you can only scroll forward through a result set; otherwise returns false.
+
+   Wrapper over QSqlQuery::isForwardOnly()
+   */
+   bool isForwardOnly() const
+   {
+      return m_query.isForwardOnly();
+   }
+
+   /*!
+   \brief Returns the size of the result (number of rows returned), or -1 if the size cannot be determined or if the database does not support reporting information about query sizes.
+
+   Wrapper over QSqlQuery::size()
+   */
+   int size() const
+   {
+      return m_query.size();
+   }
+
+   /*!
+   \brief Returns the number of rows affected by the result's SQL statement, or -1 if it cannot be determined.
+
+   Wrapper over QSqlQuery::numRowsAffected()
+   */
+   int numRowsAffected() const
+   {
+      return m_query.numRowsAffected();
+   }
+
+   /*!
+   \brief Returns error information about the last error (if any) that occurred with this query.
+
+   Wrapper over QSqlQuery::lastError()
+   */
+   QSqlError lastError() const
+   {
+      return m_query.lastError();
+   }
+
+   /*!
+   \brief Returns the text of the current query being used, or an empty string if there is no current query text.
+
+   Wrapper over QSqlQuery::lastQuery()
+   */
+   QString lastQuery() const
+   {
+      return m_query.lastQuery();
+   }
+
+   /*!
+   \brief Returns the last query that was successfully executed.
+
+   Wrapper over QSqlQuery::executedQuery()
+   */
+   QString executedQuery() const
+   {
+      return m_query.executedQuery();
+   }
+
+   /*!
+   \brief Returns the value of field index in the current record.
+
+   Wrapper over QSqlQuery::value()
+   */
+   QVariant value(int column) const
+   {
+      return m_query.value(column);
+   }
+
+   /*!
+   \brief Returns the value of the field called name in the current record. If field name does not exist an invalid variant is returned.
+
+   Wrapper over QSqlQuery::value()
+   */
+   QVariant value(const QString &colName) const
+   {
+      return m_query.value(colName);
+   }
+
+   /*!
+   \brief Returns the value for the placeholder at position column.
+
+   Wrapper over QSqlQuery::boundValue()
+   */
+   QVariant boundValue(int column) const
+   {
+      return m_query.boundValue(column);
+   }
+
+   /*!
+   \brief Returns the value for the placeholder with aliasName.
+
+   Use subclasses of ParamDirectionWrapper class (::In, ::Out, ::InOut) for aliased/directional parameter binding during PreparedQuery::exec execution
+
+   Use Out and InOut wrappers if you need to read Stored Procedures return values (output parameters).
+
+   \sa ::In, ::Out, ::InOut, PreparedQuery::exec
+   */
+   QVariant boundValue(const QString &aliasName) const
+   {
+      const int index = m_bindValueAlias.value(aliasName.trimmed().toLower(), -1);
+
+      QVariant res;
+
+      if (index >= 0)
+      {
+         res = boundValue(index);
+      }
+
+      return res;
+   }
+
+   /*!
+   \brief Returns list of the bound values (with positional binding)
+
+   Wrapper over QSqlQuery::boundValues()
+   */
+   QVariantList boundValues() const
+   {
+      QList<QVariant> list = m_query.boundValues().values();
+
+      return list;
+   }
+
+   /*!
+   \brief Returns QVariantMap filled with values fetched from current result row. Key is QString (result column name) and value is QVariant value.
+   \sa QueryResult::fetchMap
+   */
+   QVariantMap toMap() const
+   {
+      QVariantMap res;
+
+      fetchMap(res);
+
+      return res;
+   }
+
+   /*!
+   \brief Returns QVariantList filled with values fetched from current result row.
+   \sa QueryResult::fetchList
+   */
+   QVariantList toList() const
+   {
+      QVariantList res;
+
+      fetchList(res);
+
+      return res;
+   }
+
+   /*!
+   \brief Returns QStringList filled with values fetched from current result row. SQL values converted to QString with QVariant::toString() method.
+   \sa QueryResult::fetchStringList()
+   */
+   QStringList toStringList() const
+   {
+      QStringList res;
+
+      fetchStringList(res);
+
+      return res;
+   }
+
+   /*!
+   \brief Returns QVector<QVariant> filled with values fetched from current result row. SQL values not converted: QSqlQuery::value() return value used.
+   \sa QueryResult::fetchVector
+   */
+   QVector<QVariant> toVector() const
+   {
+      QVector<QVariant> res;
+
+      fetchVector(res);
+
+      return res;
+   }
+
+   /*!
+   \brief Returns QVector<T> filled with values fetched from current result row. SQL values converted with QVariant::value<T>().
+   QVector::canConvert<T>() method used for convertability check. Non-convertable values skipped.
+   \param skipNullValues Skip SQL NULL values. Resulting value is default value if skipNullValues = false.
+   \sa QueryResult::toVector
+   */
+   template <typename T>
+   QVector<T> toVector(bool skipNullValues = false) const
+   {
+      QVector<T> res;
+
+      res.reserve(m_fieldNames.count());
+
+      for (int i = 0; i < m_fieldNames.count(); ++i)
+      {
+         const QVariant &value = m_query.value(i);
+
+         if (!value.canConvert<T>())
+            continue;
+
+         if (skipNullValues && value.isNull())
+            continue;
+
+         res.append(value.value<T>());
+      }
+
+      return res;
+   }
+
+   /*!
+   \brief Returns vector of (optionally parsed) integer values from currently active result row.
+
+   Parsing with specified base will be performed if type of selected database field is String (varchar/text).
+   Not successfully parsed string values are ignored.
+
+   \param base Number base to parse int values from SQL string values.
+   \param skipNullValues Skip SQL NULL values. Resulting int value is 0 if skipNullValues = false.
+   */
+   QVector<int> parseToIntVector(int base = 10, bool skipNullValues = false) const
+   {
+      QVector<int> res;
+
+      res.reserve(m_fieldNames.count());
+
+      for (int i = 0; i < m_fieldNames.count(); ++i)
+      {
+         const QVariant &value = m_query.value(i);
+
+         if (!value.canConvert<int>())
+            continue;
+
+         if (skipNullValues && value.isNull())
+            continue;
+
+         bool ok = false;
+         int iValue = 0;
+
+         if ( ((value.type() == QVariant::String) || (value.type() == QVariant::ByteArray)))
+         {
+            const QString str = value.toString();
+
+            iValue = str.toInt(&ok, base);
+         }
+         else
+         {
+            iValue = value.toInt(&ok);
+         }
+
+         if (ok)
+         {
+            res.append(iValue);
+         }
+      }
+
+      return res;
+   }
+
+   /*!
+   \brief Returns scalar value converted to type T (the value of the first column of the current row)
+    */
+   template <typename T>
+   T scalar() const
+   {
+      return m_query.value(0).value<T>();
+   }
+
+   /*!
+   \brief Returns scalar value (the value of the first column of the current row)
+    */
+   QVariant scalar() const
+   {
+      return m_query.value(0);
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   The method has a variable number of parameters, which allows filling the list of variables with values from the current record in single call.
+
+   Overloaded <em>EasyQtSql::fetchVars</em> methods performs the corresponding type conversion with QVariant::to*() methods.
+
+   Supported parameter types: <em>int</em>, <em>double</em>, <em>bool</em>, <em>QString</em>, <em>QDate</em>, <em>QDateTime</em>, <em>QTime</em>, <em>QByteArray</em>, <em>QVariant</em>.
+
+   Variables of different types can be mixed.
+
+   \code
+   Transaction t;
+   QueryResult res = t.execQuery("SELECT a, b, c, d FROM table");
+
+   while (res.next())
+   {
+      int a;
+      bool b;
+      QString c;
+      QDateTime d;
+
+      res.fetchVars(a, b, c, d);
+   }
+   \endcode
+
+   \sa  QueryResult::fetchVars(int&) const
+      , QueryResult::fetchVars(double&) const
+      , QueryResult::fetchVars(QString&) const
+      , QueryResult::fetchVars(bool&) const
+      , QueryResult::fetchVars(QDate&) const
+      , QueryResult::fetchVars(QDateTime&) const
+      , QueryResult::fetchVars(QTime&) const
+      , QueryResult::fetchVars(QByteArray&) const
+      , QueryResult::fetchVars(QVariant&) const
+   */
+   void fetchVars(int &value) const
+   {
+      value = m_query.value(m_fetchIndex).toInt();
+
+      m_fetchIndex = 0;
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   \sa  QueryResult::fetchVars(int&) const
+   */
+   void fetchVars(double &value) const
+   {
+      value = m_query.value(m_fetchIndex).toInt();
+
+      m_fetchIndex = 0;
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   \sa  QueryResult::fetchVars(int&) const
+   */
+   void fetchVars(QString &value) const
+   {
+      value = m_query.value(m_fetchIndex).toString();
+
+      m_fetchIndex = 0;
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   \sa  QueryResult::fetchVars(int&) const
+   */
+   void fetchVars(bool &value) const
+   {
+      value = m_query.value(m_fetchIndex).toBool();
+
+      m_fetchIndex = 0;
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   \sa  QueryResult::fetchVars(int&) const
+   */
+   void fetchVars(QDate &value) const
+   {
+      value = m_query.value(m_fetchIndex).toDate();
+
+      m_fetchIndex = 0;
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   \sa  QueryResult::fetchVars(int&) const
+   */
+   void fetchVars(QDateTime &value) const
+   {
+      value = m_query.value(m_fetchIndex).toDateTime();
+
+      m_fetchIndex = 0;
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   \sa  QueryResult::fetchVars(int&) const
+   */
+   void fetchVars(QTime &value) const
+   {
+      value = m_query.value(m_fetchIndex).toTime();
+
+      m_fetchIndex = 0;
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   \sa  QueryResult::fetchVars(int&) const
+   */
+   void fetchVars(QByteArray &value) const
+   {
+      value = m_query.value(m_fetchIndex).toByteArray();
+
+      m_fetchIndex = 0;
+   }
+
+   /*!
+   \brief Assigns a variable the value from the current record
+
+   \sa  QueryResult::fetchVars(int&) const
+   */
+   void fetchVars(QVariant &value) const
+   {
+      value = m_query.value(m_fetchIndex);
+
+      m_fetchIndex = 0;
+   }
+
+   template <typename... Rest> void fetchVars(int &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++).toInt();
+
+      fetchVars(rest...);
+   }
+
+   template <typename... Rest> void fetchVars(double &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++).toDouble();
+
+      fetchVars(rest...);
+   }
+
+   template <typename... Rest> void fetchVars(QString &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++).toString();
+
+      fetchVars(rest...);
+   }
+
+   template <typename... Rest> void fetchVars(bool &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++).toBool();
+
+      fetchVars(rest...);
+   }
+
+   template <typename... Rest> void fetchVars(QDate &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++).toDate();
+
+      fetchVars(rest...);
+   }
+
+   template <typename... Rest> void fetchVars(QDateTime &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++).toDateTime();
+
+      fetchVars(rest...);
+   }
+
+   template <typename... Rest> void fetchVars(QTime &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++).toTime();
+
+      fetchVars(rest...);
+   }
+
+   template <typename... Rest> void fetchVars(QByteArray &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++).toByteArray();
+
+      fetchVars(rest...);
+   }
+
+   template <typename... Rest> void fetchVars(QVariant &value, Rest&... rest) const
+   {
+      value = m_query.value(m_fetchIndex++);
+
+      fetchVars(rest...);
+   }
+
+   /*!
+   \brief Fills Q_OBJECT object properties with data fetched from current result row.
+
+   Qt Meta-Object System used. Only writable properties can be filled.
+
+   C++ class fields (properties) will be mapped on SQL result table by Q_PROPERTY member names. For example, if Q_OBJECT class contains Q_PROPERTY named "e" but SELECT query defines no "e" column, object property "e" not affected by the method.
+
+   \code
+
+   class TestObject : public QObject
+   {
+      Q_OBJECT
+
+      //property "a" will be filled with "a" column of the Select SQL query result
+      Q_PROPERTY(int a MEMBER a)
+      Q_PROPERTY(int b MEMBER b)
+      Q_PROPERTY(int c MEMBER c)
+      Q_PROPERTY(QString d MEMBER d)
+
+      //property e will be ignored in the example because there is no e field in the Select SQL query result
+      Q_PROPERTY(int e MEMBER e)
+
+   private:
+      int a;
+      int b;
+      int c;
+      QString d;
+      int e;
+   };
+
+   void test()
+   {
+      Transaction t;
+      QueryResult res = t.execQuery("SELECT a, b, c, d FROM table");
+
+      while (res.next())
+      {
+         //TestObject instance (Q_OBJECT class)
+         TestObject testRow;
+         res.fetchObject(testRow);
+      }
+   }
+
+   \endcode
+
+   \param object Q_OBJECT object reference
+   */
+   void fetchObject(QObject &object) const
+   {
+      const QMetaObject *metaobject = object.metaObject();
+      const int count = metaobject->propertyCount();
+
+      const QVariantMap map = toMap();
+
+      for (int i = 0; i < count; ++i)
+      {
+         QMetaProperty metaproperty = metaobject->property(i);
+
+         if (metaproperty.isWritable())
+         {
+            QLatin1String sName(metaproperty.name());
+
+            if (map.contains(sName))
+            {
+               object.setProperty(sName.data(), map.value(sName));
+            }
+         }
+      }
+   }
+
+   /*!
+   \brief Fills Q_GADGET object properties with data fetched from current result row.
+
+   Qt Meta-Object System used. Only writable properties can be filled.
+
+   C++ struct fields will be mapped on SQL result table by Q_PROPERTY member names. For example, if Q_GADGET struct contains Q_PROPERTY named "e" but SELECT query defines no "e" column, object property "e" not affected by the method.
+
+   \code
+   struct Row
+   {
+      int a;
+      int b;
+      int c;
+      QString d;
+      int e;
+
+   private:
+      Q_GADGET
+
+      //property "a" will be filled with "a" column of the Select SQL query result
+      Q_PROPERTY(int a MEMBER a)
+      Q_PROPERTY(int b MEMBER b)
+      Q_PROPERTY(int c MEMBER c)
+      Q_PROPERTY(QString d MEMBER d)
+
+      //property e will be ignored in the example because there is no e field in the Select SQL query result
+      Q_PROPERTY(int e MEMBER e)
+   };
+
+   void test()
+   {
+      Transaction t;
+      QueryResult res = t.execQuery("SELECT a, b, c, d FROM table");
+
+      while (res.next())
+      {
+         //Row instance (Q_GADGET structure)
+         Row testRow;
+
+         //fetch testRow from current result row, properties a, b, c, d will be filled here:
+         res.fetchGadget(testRow);
+      }
+   }
+
+   \endcode
+
+   \param gadget Q_GADGET reference
+   */
+   template<typename T>
+   void fetchGadget(T &gadget) const
+   {
+      const QMetaObject &metaobject = gadget.staticMetaObject;
+
+      const int count = metaobject.propertyCount();
+
+      const QVariantMap map = toMap();
+
+      for (int i = 0; i < count; ++i)
+      {
+         QMetaProperty metaproperty = metaobject.property(i);
+
+         if (metaproperty.isWritable())
+         {
+            QLatin1String sName(metaproperty.name());
+
+            if (map.contains(sName))
+            {
+               metaproperty.writeOnGadget(&gadget, map.value(sName));
+            }
+         }
+      }
+   }
+
+   /*!
+   \brief Fills QVariantMap with values fetched from current result row. Key is QString (result column name) and value is QVariant value.
+   \param[out] map QVariantMap
+   \sa QueryResult::toMap
+   */
+   void fetchMap(QVariantMap &map) const
+   {
+      map.clear();
+
+      for (int i = 0; i < m_fieldNames.count(); ++i)
+      {
+         map.insert(m_fieldNames.at(i), m_query.value(i));
+      }
+   }
+
+   /*!
+   \brief Fills QVariantList with values fetched from current result row. SQL values not converted: QSqlQuery::value() return value used.
+   \param[out] list QVariantList
+   \sa QueryResult::toList
+   */
+   void fetchList(QVariantList &list) const
+   {
+      list.clear();
+
+      for (int i = 0; i < m_fieldNames.count(); ++i)
+      {
+         list.append(m_query.value(i));
+      }
+   }
+
+   /*!
+   \brief Fills QVector<QVariant> with values fetched from current result row. SQL values not converted: QSqlQuery::value() return value used.
+   \param[out] vector QVector<QVariant>
+   \sa QueryResult::toVector
+   */
+   void fetchVector(QVector<QVariant> &vector) const
+   {
+      vector.clear();
+      vector.reserve(m_fieldNames.count());
+
+      for (int i = 0; i < m_fieldNames.count(); ++i)
+      {
+         vector.append(m_query.value(i));
+      }
+   }
+
+   /*!
+   \brief Fills QStringList with values fetched from current result row. SQL values converted to QString with QVariant::toString() method.
+   \param[out] list QStringList
+   \sa QueryResult::toStringList
+   */
+   void fetchStringList(QStringList &list) const
+   {
+      list.clear();
+
+      for (int i = 0; i < m_fieldNames.count(); ++i)
+      {
+         list.append(m_query.value(i).toString());
+      }
+   }
+
+private:
+
+   QueryResult()
+   { }
+
+   explicit QueryResult(const QSqlQuery &query)
+    : m_query(query)
+   { }
+
+   QueryResult(const QSqlQuery &query, const QMap<QString, int> &bindValueAliasMap)
+    : m_query(query)
+    , m_bindValueAlias(bindValueAliasMap)
+   { }
+
+private:
+   QSqlQuery   m_query;
+   QStringList m_fieldNames;
+   QMap<QString, int> m_bindValueAlias;
+   mutable int m_fetchIndex = 0;
+   bool m_firstRowFetched = false;
+};
+
+#endif // EASYQTSQL_QUERYRESULT_H

+ 188 - 0
QFD/EasyQtSql/EasyQtSql_SqlFactory.h

@@ -0,0 +1,188 @@
+#ifndef EASYQTSQL_SQLFACTORY_H
+#define EASYQTSQL_SQLFACTORY_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef EASY_QT_SQL_MAIN
+
+#    include <QtSql>
+
+#endif
+
+class SqlFactory
+{
+public:
+    static SqlFactory *getInstance()
+    {
+        static SqlFactory instance;
+        return &instance;
+    }
+
+    static SqlFactory *getInstance2()
+    {
+        static SqlFactory instance2;
+        return &instance2;
+    }
+
+    class ThreadDBPool;
+
+    struct DBSetting
+    {
+        friend class ThreadDBPool;
+
+        DBSetting() { }
+
+        DBSetting(const QString &type, const QString &host, int port, const QString &username, const QString &password,
+                  const QString &dbname)
+            : type(type), port(port), host(host), username(username), password(password), dbName(dbname)
+        {
+        }
+
+        DBSetting(const QString &type, const QString &connectionString) : type(type), dbName(connectionString) { }
+
+        static DBSetting sqliteInmemory() { return DBSetting("QSQLITE", ":memory:"); }
+
+        QString getType() const { return type.isEmpty() ? "QODBC" : type; }
+
+    private:
+        QString type;
+        QVariant port;
+        QString host;
+        QString username;
+        QString password;
+        QString dbName;
+    };
+
+    class ThreadDBPool
+    {
+    public:
+        ~ThreadDBPool()
+        {
+            for (const QString &uniqueConnName : m_connNameMap.values()) {
+                {
+                    QSqlDatabase db = QSqlDatabase::database(uniqueConnName);
+                    if (db.isOpen()) {
+                        db.close();
+                    }
+                }
+
+                QSqlDatabase::removeDatabase(uniqueConnName);
+            }
+        }
+
+        void addConnection(const DBSetting &settings, const QString &connectionName)
+        {
+            const QString uniqueConnectionName = connectionName + QUuid::createUuid().toString();
+
+            m_connNameMap.insert(connectionName, uniqueConnectionName);
+
+            QSqlDatabase db = QSqlDatabase::addDatabase(settings.getType(), uniqueConnectionName);
+
+            db.setDatabaseName(settings.dbName);
+            db.setHostName(settings.host);
+            db.setUserName(settings.username);
+            db.setPassword(settings.password);
+
+            if (settings.port.isValid()) {
+                db.setPort(settings.port.toInt());
+            }
+        }
+
+        bool connectionExists(const QString &connectionName) const { return m_connNameMap.contains(connectionName); }
+
+        QSqlDatabase getDatabase(const QString &connectionName) const
+        {
+            const QString &uniqueConnectionName = m_connNameMap.value(connectionName);
+
+            QSqlDatabase db = QSqlDatabase::database(uniqueConnectionName);
+
+            if (!db.isOpen()) {
+                if (!db.open()) {
+                    qCritical() << db.lastError().text();
+                }
+            }
+
+            return db;
+        }
+
+    private:
+        QMap<QString, QString> m_connNameMap;
+    };
+
+    SqlFactory *config(const DBSetting &settings, const QString &connectionName = QSqlDatabase::defaultConnection)
+    {
+        QMutexLocker locker(&mutex);
+
+        m_settings.insert(connectionName, settings);
+
+        return this;
+    }
+
+    QSqlDatabase getDatabase(const QString &connectionName = QSqlDatabase::defaultConnection)
+    {
+        QMutexLocker locker(&mutex);
+
+        if (m_settings.contains(connectionName)) {
+            ThreadDBPool *threadDbPool = nullptr;
+
+            if (!m_dbPool.hasLocalData()) {
+                threadDbPool = new ThreadDBPool();  // new pool for current thread
+
+                m_dbPool.setLocalData(threadDbPool);
+            } else {
+                threadDbPool = m_dbPool.localData();
+            }
+
+            if (threadDbPool) {
+                if (!threadDbPool->connectionExists(connectionName))  // if no connection created for current thread
+                {
+                    const DBSetting &settings = m_settings[connectionName];
+
+                    threadDbPool->addConnection(
+                            settings,
+                            connectionName);  // create new connection with specified settings for current thread
+                }
+
+                return threadDbPool->getDatabase(connectionName);
+            }
+        }
+
+        return QSqlDatabase();
+    }
+
+private:
+    QMutex mutex;
+
+    QMap<QString, DBSetting> m_settings;
+    QThreadStorage<ThreadDBPool *> m_dbPool;
+
+    QString m_defaultConnName;
+
+private:
+    SqlFactory() { }
+};
+
+#endif  // EASYQTSQL_SQLFACTORY_H

+ 511 - 0
QFD/EasyQtSql/EasyQtSql_Transaction.h

@@ -0,0 +1,511 @@
+#ifndef EASYQTSQL_TRANSACTION_H
+#define EASYQTSQL_TRANSACTION_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtSql>
+#include "EasyQtSql_DBException.h"
+#include "EasyQtSql_NonQueryResult.h"
+#include "EasyQtSql_InsertQuery.h"
+#include "EasyQtSql_DeleteQuery.h"
+#include "EasyQtSql_UpdateQuery.h"
+#include "EasyQtSql_PreparedQuery.h"
+
+#endif
+
+#include "EasyQtSql_Util.h"
+
+/*!
+\brief QSqlDatabase wrapper.
+
+\code
+void test()
+{
+   QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
+   db.setDatabaseName(":memory:");
+
+   try
+   {
+      Database sdb(db);
+
+      sdb.execNonQuery("CREATE TABLE table (a int, b int, c int, d text)");
+   }
+   catch (const DBException &e)
+   {
+      //you can handle all the errors at one point
+
+      qDebug() << e.lastError << e.lastQuery;
+   }
+}
+\endcode
+*/
+class Database
+{
+   Q_DISABLE_COPY(Database)
+
+public:
+
+   /*!
+    * \param db QSqlDatabase to use
+    *
+    * Creates an Database object, tries to open <em>db</em> connection if not opened.
+    *
+    * \throws DBException
+    */
+   explicit Database (const QSqlDatabase &db = QSqlDatabase())
+   {
+      m_db = db.isValid() ? db : QSqlDatabase::database();
+
+      if (!m_db.isOpen())
+      {
+         if (!m_db.open())
+         {
+            #ifdef DB_EXCEPTIONS_ENABLED
+            throw DBException(m_db);
+            #endif
+         }
+      }
+   }
+
+   Database(Database&& other)
+   {
+      m_db = other.m_db;
+      other.m_db = QSqlDatabase();
+   }
+
+   Database& operator=(Database&& other)
+   {
+      if (this == &other) return *this;
+
+      m_db = other.m_db;
+      other.m_db = QSqlDatabase();
+
+      return *this;
+   }
+
+   /*!
+    * \brief Returns information about the last error that occurred on the underlying database.
+    */
+   QSqlError lastError() const
+   {
+      return m_db.lastError();
+   }
+
+   /*!
+   \brief Executes non-query SQL statement (DELETE, INSERT, UPDATE, CREATE, ALTER, etc.)
+   \param query SQL statement string
+   \throws DBException
+   */
+   NonQueryResult execNonQuery(const QString &sql) const
+   {
+      QSqlQuery q = m_db.exec(sql);
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+      QSqlError lastError = q.lastError();
+
+      if (lastError.isValid())
+         throw DBException(q);
+
+#endif
+
+      return NonQueryResult(q);
+   }
+
+   /*!
+   \brief Executes SELECT query
+   \param query SQL statement string
+   \throws DBException
+   */
+   QueryResult execQuery(const QString &sql) const
+   {
+      QSqlQuery q = m_db.exec(sql);
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+      QSqlError lastError = q.lastError();
+
+      if (lastError.isValid())
+         throw DBException(q);
+
+#endif
+
+      return QueryResult(q);
+   }
+
+   /*!
+   \brief Creates INSERT query wrapper
+   \param table Table to insert into with list of columns
+   */
+   InsertQuery insertInto(const QString &table) const
+   {
+      InsertQuery query(table, m_db);
+
+      return query;
+   }
+
+   /*!
+   \brief Creates DELETE query wrapper
+   \param table Table to delete from
+   */
+   DeleteQuery deleteFrom(const QString &table) const
+   {
+      DeleteQuery query(table, m_db);
+
+      return query;
+   }
+
+   /*!
+   \brief Creates UPDATE query wrapper
+   \param table Table to update
+   */
+   UpdateQuery update(const QString &table) const
+   {
+      UpdateQuery query(table, m_db);
+
+      return query;
+   }
+
+   /*!
+   \brief Prepares SQL statement
+   \param sql SQL statement string
+   \param forwardOnly Configure underlying QSqlQuery as forwardOnly
+   */
+   PreparedQuery prepare(const QString &sql, bool forwardOnly = true) const
+   {
+      PreparedQuery query(sql, m_db, forwardOnly);
+
+      return query;
+   }
+
+   /*!
+    * \brief Returns a reference to the wrapped QSqlDatabase object
+    */
+   QSqlDatabase &qSqlDatabase()
+   {
+      return m_db;
+   }
+
+   /*!
+    \brief Executes <em>query</em> and applies function <em>f</em> to each result row.
+    \param query SQL query string (SELECT statement)
+    \param f Function (lambda) to apply to
+    \returns num rows handled with function <em>f</em>
+
+    \code
+    Database db;
+    db.each("SELECT * FROM table", [](const QueryResult &res)
+    {
+       qDebug() << res.toMap();
+    });
+    \endcode
+    */
+   template<typename Func>
+   int each (const QString &query, Func&& f) const
+   {
+      QueryResult res = execQuery(query);
+
+      return Util::each(res, f);
+   }
+
+   /*!
+    \brief Executes <em>query</em> and applies function <em>f</em> to the first result row.
+    \param query SQL query string (SELECT statement)
+    \param f Function (lambda) to apply to
+    \returns num rows handled with function <em>f</em>
+
+    \code
+    Database db;
+    db.first("SELECT * FROM table", [](const QueryResult &res)
+    {
+       qDebug() << res.toMap();
+    });
+    \endcode
+    */
+   template<typename Func>
+   int first (const QString &query, Func&& f) const
+   {
+      QueryResult res = execQuery(query);
+
+      return Util::first(res, f);
+   }
+
+   /*!
+    \brief Executes <em>query</em> and applies function <em>f</em> to <em>count</em> result rows starting from index <em>start</em>.
+    \param query SQL query string (SELECT statement)
+    \param start Start index
+    \param count Row count to handle
+    \param f Function (lambda) to apply to
+    \returns num rows handled with function <em>f</em>
+
+    \code
+    Database db;
+    db.range("SELECT * FROM table", 3, 10, [](const QueryResult &res)
+    {
+       qDebug() << res.toMap();
+    });
+    \endcode
+    */
+   template<typename Func>
+   int range(const QString &query, int start, int count, Func&& f) const
+   {
+      QueryResult res = execQuery(query);
+
+      return Util::range(res, start, count, f);
+   }
+
+   /*!
+    \brief Executes <em>query</em> and applies function <em>f</em> to <em>topCount</em> result rows.
+    \param query SQL query string (SELECT statement)
+    \param topCount Row count to handle
+    \param f Function (lambda) to apply to
+    \returns num rows handled with function <em>f</em>
+
+    \code
+    Database db;
+    db.top("SELECT * FROM table", 10, [](const QueryResult &res)
+    {
+       qDebug() << res.toMap();
+    });
+    \endcode
+    */
+   template<typename Func>
+   int top(const QString &query, int topCount, Func&& f) const
+   {
+      QueryResult res = execQuery(query);
+
+      return Util::top(res, topCount, f);
+   }
+
+   /*!
+    \brief Executes <em>query</em> and returns scalar value converted to T.
+    \param query SQL query string (SELECT statement)
+    \sa QueryResult::scalar
+    */
+   template<typename T>
+   T scalar(const QString &query) const
+   {
+      QueryResult res = execQuery(query);
+
+      res.next();
+
+      return res.scalar<T>();
+   }
+
+   /*!
+    \brief Executes <em>query</em> and returns scalar value.
+    \param query SQL query string (SELECT statement)
+    \sa QueryResult::scalar
+    */
+   QVariant scalar(const QString &query) const
+   {
+      QueryResult res = execQuery(query);
+
+      res.next();
+
+      return res.scalar();
+   }
+
+protected:
+   QSqlDatabase m_db;
+};
+
+
+/*!
+\brief QSqlDatabase transaction wrapper.
+
+Features:
+ - Automatic rollback of non-expclicitely commited transactions
+ - Helper methods: Transaction::execNonQuery, Transaction::execQuery, Transaction::insertInto, Transaction::deleteFrom, Transaction::update, Transaction::prepare.
+
+\code
+void test()
+{
+   QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
+   db.setDatabaseName(":memory:");
+   db.open();
+
+   try
+   {
+      Transaction t(db);
+
+      t.execNonQuery("CREATE TABLE table (a int, b int, c int, d text)");
+
+      t.insertInto("table (a, b, c, d)")
+         .values(1, 2, 3, "row1")
+         .values(4, 5, 6, "row2")
+         .values(7, 8, 9, "row3")
+         .exec();
+
+      PreparedQuery query = t.prepare("SELECT a, b, c, d FROM table");
+
+      QueryResult res = query.exec();
+      while (res.next())
+      {
+         QVariantMap map = res.toMap();
+         qDebug() << map;
+      }
+
+      t.update("table")
+         .set("a", 111)
+         .set("b", 222)
+         .where("c = ? OR c = ?", 3, 6);
+
+      res = query.exec();
+      while (res.next())
+      {
+         QVariantMap map = res.toMap();
+         qDebug() << map;
+      }
+
+      t.commit(); //the transaction will be rolled back on exit from the scope (when calling the destructor) if you do not explicitly commit
+
+   catch (const DBException &e)
+   {
+      //you can handle all the errors at one point
+      //the transaction will be automatically rolled back on exception
+
+      qDebug() << e.lastError << e.lastQuery;
+   }
+}
+\endcode
+*/
+class  Transaction : public Database
+{
+   Q_DISABLE_COPY(Transaction)
+
+public:
+
+   explicit Transaction (const QSqlDatabase &db = QSqlDatabase())
+     : Database(db)
+     , m_commited(false)
+     , m_started(false)
+   {      
+      m_started = m_db.transaction();
+
+      #ifdef DB_EXCEPTIONS_ENABLED
+      if (!m_started)
+      {
+         throw DBException(m_db);
+      }
+      #endif
+   }
+
+   Transaction (Transaction&& other)
+      : Database(std::move(other))
+   {
+      m_commited = other.m_commited;
+      m_started  = other.m_started;
+
+      other.m_commited = false;
+      other.m_started  = false;
+   }
+
+   Transaction& operator=(Transaction&& other)
+   {
+      m_started  = other.m_started;
+      m_commited = other.m_commited;
+
+      other.m_commited = false;
+      other.m_started  = false;
+
+      return static_cast<Transaction&>(Database::operator=(std::move(other)));
+   }
+
+   ~Transaction()
+   {
+      if (m_db.isValid() && !m_commited)
+      {
+         m_db.rollback();
+      }
+   }
+
+   /*!
+   \brief Commits transaction
+
+   The transaction will be rolled back on calling the destructor if not explicitly commited
+
+   \throws DBException
+   */
+   bool commit()
+   {
+      if (m_db.isValid() && !m_commited)
+      {
+         m_commited = m_db.commit();
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+         if (!m_commited)
+            throw DBException(m_db);
+
+#endif
+
+      }
+
+      return m_commited;
+   }
+
+   /*!
+   \brief Rolls back transaction
+   */
+   bool rollback()
+   {
+      bool res = false;
+
+      if (m_db.isValid() && !m_commited)
+      {
+         res = m_db.rollback();
+
+         m_commited = false;
+      }
+
+      return res;
+   }
+
+   /*!
+   \brief Returns true if the transaction has been started successfully. Otherwise it returns false.
+   */
+   bool started() const
+   {
+      return m_started;
+   }
+
+   /*!
+   \brief Returns true if the transaction has been commited successfully. Otherwise it returns false.
+   */
+   bool commited() const
+   {
+      return m_commited;
+   }
+
+private:   
+   bool m_commited = false;
+   bool m_started = false;   
+};
+
+#endif // EASYQTSQL_TRANSACTION_H

+ 189 - 0
QFD/EasyQtSql/EasyQtSql_UpdateQuery.h

@@ -0,0 +1,189 @@
+#ifndef EASYQTSQL_UPDATEQUERY_H
+#define EASYQTSQL_UPDATEQUERY_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include <QtSql>
+#include "EasyQtSql_NonQueryResult.h"
+
+#endif
+
+/*!
+\brief QSqlQuery wrapper for <em>UPDATE ... SET ... WHERE ...</em> query execution.
+*/
+class  UpdateQuery
+{
+public:
+   UpdateQuery(const QString &table, const QSqlDatabase &db)
+     : q(db)
+     , m_table(table)
+   {   }
+
+   /*!
+   \brief Sets table <em>field</em> to <em>value</em>
+   \param field Table field name
+   \param value Value to set
+   \return UpdateQuery reference
+
+   The method returns an UpdateQuery reference so its call can be chained:
+
+   \code
+   //UPDATE table SET a=111, b=222
+   t.update("table")
+         .set("a", 111) //method chaining
+         .set("b", 222)
+         .exec();
+   \endcode
+   */
+   UpdateQuery &set(const QString &field, const QVariant &value)
+   {
+      m_updateMap[field] = value;
+
+      return *this;
+   }
+
+   /*!
+   \brief Sets table fields to values from <em>map</em>
+   \param map Values map. Map key is field name, map value is field value.
+
+   The method returns an UpdateQuery reference so its calls can be chained.
+
+   \code
+   //UPDATE table SET a=111, b=222
+   t.update("table")
+         .set(QVariantMap{ {"a", 111}, {"b", 222} })
+         .exec();
+   \endcode
+   */
+   UpdateQuery &set(const QVariantMap &map)
+   {
+      for (auto it = map.begin(); it != map.end(); ++it)
+      {
+         m_updateMap[it.key()] = it.value();
+      }
+
+      return *this;
+   }
+
+   /*!
+   \brief Executes update query with <em>expr</em> condition.
+   \param expr WHERE condition
+
+   \code
+   //UPDATE table SET a=111, b=222 WHERE a=1 AND b=2
+   t.update("table")
+         .set(QVariantMap{ {"a", 111}, {"b", 222} })
+         .where("a=1 AND b=2");
+   \endcode
+   */
+   NonQueryResult where(const QString &expr)
+   {
+      m_whereExpr = expr;
+      return exec();
+   }
+
+   /*!
+   \brief Executes update query with <em>expr</em> condition and <em>last</em> parameter binding.
+   \param expr WHERE condition
+   \param last Parameter to bind on WHERE expression
+
+   The method supports variable count of QVariant parameters.
+   Parameters are bound with <em>QSqlQuery::addBindValue</em>.
+   \code
+   //UPDATE table SET a=111, b=222 WHERE a=1 AND b=2
+   t.update("table")
+         .set(QVariantMap{ {"a", 111}, {"b", 222} })
+         .where("a=? AND b=?", 1, 2);
+   \endcode
+   */
+   NonQueryResult where(const QString &expr, const QVariant &last)
+   {
+      m_params.append(last);
+      m_whereExpr = expr;
+      return exec();
+   }
+
+   template <typename... Rest> NonQueryResult where(const QString &expr, const QVariant &first, const Rest&... rest)
+   {
+      m_params.append(first);
+      return where(expr, rest...);
+   }
+
+   /*!
+   \brief Executes UPDATE query without conditions
+   */
+   NonQueryResult exec()
+   {
+      QString sql = "UPDATE " + m_table + " SET ";
+      QStringList fieldValuePairs;
+
+      for (auto it = m_updateMap.begin(); it != m_updateMap.end(); ++it)
+      {
+         fieldValuePairs.append(it.key() + "=?");
+      }
+
+      sql += fieldValuePairs.join(",");
+
+      if (!m_whereExpr.isEmpty())
+      {
+         sql += " WHERE " + m_whereExpr;
+      }
+
+      q.prepare(sql);
+
+      for (auto it = m_updateMap.begin(); it != m_updateMap.end(); ++it)
+      {
+         q.addBindValue(it.value());
+      }
+
+      for (auto it = m_params.begin(); it != m_params.end(); ++it)
+      {
+         q.addBindValue(*it);
+      }
+
+      bool res = q.exec();
+
+#ifdef DB_EXCEPTIONS_ENABLED
+
+      if (!res)
+         throw DBException(q);
+
+#endif
+
+      return NonQueryResult(q);
+   }
+
+private:
+   QSqlQuery q;
+   QString m_table;
+   QVariantMap m_updateMap;
+   QVariantList m_params;
+   QString m_whereExpr;
+};
+
+#endif // EASYQTSQL_UPDATEQUERY_H

+ 142 - 0
QFD/EasyQtSql/EasyQtSql_Util.h

@@ -0,0 +1,142 @@
+#ifndef EASYQTSQL_UTIL_H
+#define EASYQTSQL_UTIL_H
+
+/*
+ * The MIT License (MIT)
+ * Copyright 2018 Alexey Kramin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#ifndef EASY_QT_SQL_MAIN
+
+#include "EasyQtSql_QueryResult.h"
+
+#endif
+
+/*!
+\brief Utility functions.
+
+\code   
+   t.first("SELECT 1", [](const QueryResult &row){
+      qDebug() << row.scalar<bool>();
+   });
+
+   t.each("SELECT * FROM table1", [](const QueryResult &row){
+      qDebug() << row.toMap();
+   });
+
+   PreparedQuery query = t.prepare("SELECT a, b, c, d FROM table1 WHERE a = ? AND b = ?");
+   
+   Util::each(query.exec(1, 2), [](const QueryResult &row){
+      qDebug() << row.toMap();
+   });
+\endcode
+*/
+class Util
+{
+public:
+
+	/*!
+   \brief Applies function (lambda) f to each row in res.
+   \param res QueryResult 
+   \param f Function
+   */
+   template<typename Func>
+   static int each(QueryResult &res, Func&& f)
+   {
+      int rowCount = 0;
+
+      if (res.isActive())
+      {
+         while (res.next())
+         {
+            f(res);
+            ++rowCount;
+         }
+      }
+
+      return rowCount;
+   }
+
+   /*!
+   \brief Applies function (lambda) f to count rows starting from start index
+   \param res QueryResult 
+   \param start Index of start row
+   \param count Rows count
+   \param f Function
+   */
+   template<typename Func>
+   static int range(QueryResult &res, int start, int count, Func&& f)
+   {
+      Q_ASSERT(start >= 0);
+      Q_ASSERT(count >= 0);
+
+      int rowCount = 0;
+
+      if (res.isActive())
+      {
+         //skip items
+         for (int i = 0; i < start; ++i)
+         {
+            if (!res.next())
+               return rowCount;
+         }
+
+         for (int i = 0; i < count && res.next(); ++i)
+         {
+            f(res);
+            rowCount++;
+         }
+      }
+
+      return rowCount;
+   }
+
+   /*!
+   \brief Applies function (lambda) f to topCount rows from res
+   \param res QueryResult 
+   \param topCount Count of rows
+   \param count Rows count
+   \param f Function
+   */
+   template<typename Func>
+   static int top(QueryResult &res, int topCount, Func&& f)
+   {
+      return range(res, 0, topCount, f);
+   }
+   
+   /*!
+   \brief Applies function (lambda) f to first result row
+   \param res QueryResult    
+   \param f Function
+   */
+   template<typename Func>
+   static int first(QueryResult &res, Func&& f)
+   {
+      return top(res, 1, f);
+   }
+
+private:
+   Util(){}
+};
+
+#endif // EASYQTSQL_UTIL_H

+ 31 - 0
QFD/EasyQtSql/Tests/Shared/Shared.h

@@ -0,0 +1,31 @@
+#ifndef SHARED_H
+#define SHARED_H
+
+#include <QtCore>
+
+struct Row
+{
+   int a;
+   int b;
+   int c;
+   QString d;
+
+private:
+   Q_GADGET
+   Q_PROPERTY(int a MEMBER a)
+   Q_PROPERTY(int b MEMBER b)
+   Q_PROPERTY(int c MEMBER c)
+   Q_PROPERTY(QString d MEMBER d)
+};
+
+class TestObject : public QObject, public Row
+{
+   Q_OBJECT
+   Q_PROPERTY(int a MEMBER a)
+   Q_PROPERTY(int b MEMBER b)
+   Q_PROPERTY(int c MEMBER c)
+   Q_PROPERTY(QString d MEMBER d)
+};
+
+
+#endif // SHARED_H

+ 14 - 0
QFD/EasyQtSql/Tests/TestDDL/TestDDL.pro

@@ -0,0 +1,14 @@
+QT += testlib sql
+QT -= gui
+
+include(../../EasyQtSql/EasyQtSql.pri)
+
+CONFIG += qt console warn_on depend_includepath testcase
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+SOURCES +=  tst_testddl.cpp
+
+HEADERS += \
+    ../Shared/Shared.h

+ 175 - 0
QFD/EasyQtSql/Tests/TestDDL/tst_testddl.cpp

@@ -0,0 +1,175 @@
+#include <QtTest>
+#include "EasyQtSql.h"
+
+using namespace EasyQtSql;
+
+class TestDDL : public QObject
+{
+   Q_OBJECT
+
+public:
+   TestDDL() {}
+   ~TestDDL(){}
+
+private slots:
+   void initTestCase();
+   void cleanupTestCase();
+   void test_case1();
+   void test_case2();
+   void test_case3();
+   void test_case4();
+   void test_case5();
+   void test_case6();
+   void test_case7();
+   void test_case8();
+
+};
+
+void TestDDL::initTestCase()
+{
+   QLatin1Literal driverName("QSQLITE");
+
+   if (!QSqlDatabase::drivers().contains(driverName))
+       QFAIL("This test requires the SQLITE database driver");
+
+   QSqlDatabase sdb = QSqlDatabase::addDatabase(driverName);
+
+   sdb.setDatabaseName(":memory:");
+
+   if (!sdb.open())
+   {
+      QFAIL(sdb.lastError().text().toStdString().c_str());
+   }
+}
+
+void TestDDL::cleanupTestCase()
+{
+   {
+      QSqlDatabase sdb = QSqlDatabase::database(QSqlDatabase::defaultConnection);
+      if (sdb.isOpen())
+      {
+         sdb.close();
+      }
+   }
+
+   QSqlDatabase::removeDatabase(QSqlDatabase::defaultConnection);
+}
+
+void TestDDL::test_case1()
+{   
+   QVERIFY_EXCEPTION_THROWN({
+                               Transaction t;
+
+                               PreparedQuery query = t.prepare("SELECT * FROM table1"); //there is no table1, so exception expected
+
+                               QueryResult res = query.exec();
+
+                            }, DBException);
+}
+
+void TestDDL::test_case2()
+{   
+   try
+   {
+      Transaction t;
+
+      t.execNonQuery("CREATE TABLE table2 (a int, b int, c int, d text)"); //create table2
+
+      PreparedQuery query = t.prepare("SELECT * FROM table2"); //...and select from (empty) table2
+
+      QueryResult res = query.exec();
+
+      //transaction is uncommited, so table2 will be removed after rollback
+   }
+   catch (const DBException &e)
+   {
+      QFAIL(e.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestDDL::test_case3()
+{   
+   try
+   {
+      Transaction t;
+
+      t.execNonQuery("CREATE TABLE table2 (a int, b int, c int, d text)");
+
+      //transaction is uncommited
+   }
+   catch (const DBException &e)
+   {
+      QFAIL(e.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestDDL::test_case4()
+{
+   try
+   {
+      Transaction t;
+
+      t.execNonQuery("CREATE TABLE table2 (a int, b int, c int, d text)"); //create table2
+
+      PreparedQuery query = t.prepare("SELECT * FROM table2");
+
+      QueryResult res = query.exec();
+
+      t.commit(); // commit transaction (table2 created and commited)
+   }
+   catch (const DBException &e)
+   {
+      QFAIL(e.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestDDL::test_case5()
+{
+   QVERIFY_EXCEPTION_THROWN({
+
+                               Transaction t;
+                               t.execNonQuery("CREATE TABLE table2 (a int, b int, c int, d text)"); //cant create existed table2
+
+                            }, DBException);
+}
+
+void TestDDL::test_case6()
+{
+   QVERIFY_EXCEPTION_THROWN({
+
+                               Transaction t;
+                               t.execNonQuery("DROP TABLE table4"); //can't drop table4
+
+                            }, DBException);
+}
+
+void TestDDL::test_case7()
+{
+   try
+   {
+      Transaction t;
+
+      t.execNonQuery("DROP TABLE table2"); //can drop table2
+
+      t.commit(); // commit transaction
+   }
+   catch (const DBException &e)
+   {
+      QFAIL(e.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestDDL::test_case8()
+{
+   QVERIFY_EXCEPTION_THROWN({
+
+                               Transaction t;
+                               t.execNonQuery("DROP TABLE table2"); //there is no table2
+
+                            }, DBException);
+}
+
+
+QTEST_APPLESS_MAIN(TestDDL)
+
+#include "tst_testddl.moc"

+ 16 - 0
QFD/EasyQtSql/Tests/TestDelete/TestDelete.pro

@@ -0,0 +1,16 @@
+QT += testlib sql
+QT -= gui
+
+include(../../EasyQtSql/EasyQtSql.pri)
+
+CONFIG += qt console warn_on depend_includepath testcase
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+SOURCES += \  
+    tst_testdelete.cpp
+
+HEADERS += \
+    ../Shared/Shared.h
+

+ 339 - 0
QFD/EasyQtSql/Tests/TestDelete/tst_testdelete.cpp

@@ -0,0 +1,339 @@
+#include <QtTest>
+#include "EasyQtSql.h"
+#include "../Shared/Shared.h"
+
+using namespace EasyQtSql;
+
+class TestDelete : public QObject
+{
+   Q_OBJECT
+
+public:
+   TestDelete(){}
+   ~TestDelete(){}
+
+private slots:
+   void initTestCase();
+   void cleanupTestCase();
+   void test_case1();
+   void test_case2();
+   void test_case3();
+   void test_case4();
+
+   //====================================================
+   // Test data
+
+   const QList<Row> &testData() const
+   {
+      const static QList<Row> rows =
+      {  {1, 2, 3, "a"}
+       , {4, 5, 6, "b"}
+       , {7, 8, 9, "c"}
+      };
+
+      return rows;
+   }
+
+   //====================================================
+
+   int colCount() const
+   {
+      static Row sampleRow;
+
+      return sampleRow.staticMetaObject.propertyCount();
+   }
+
+   int rowCount() const
+   {
+      return testData().count();
+   }
+
+};
+
+void TestDelete::initTestCase()
+{
+   QLatin1Literal driverName("QSQLITE");
+
+   if (!QSqlDatabase::drivers().contains(driverName))
+       QFAIL("This test requires the SQLITE database driver");
+
+   QSqlDatabase sdb = QSqlDatabase::addDatabase(driverName);
+
+   sdb.setDatabaseName(":memory:");
+
+   if (!sdb.open())
+   {
+      QFAIL(sdb.lastError().text().toStdString().c_str());
+   }
+
+   Transaction t(sdb);
+
+   t.execNonQuery("CREATE TABLE testTable (a int, b int, c int, d text)");
+
+   const auto &rows = testData();
+
+   //multi insert
+   NonQueryResult res1 = t.insertInto("testTable (a, b, c, d)")
+      .values(rows[0].a, rows[0].b, rows[0].c, rows[0].d)
+      .values(rows[1].a, rows[1].b, rows[1].c, rows[1].d)
+      .values(rows[2].a, rows[2].b, rows[2].c, rows[2].d)
+      .exec();
+
+   t.commit();
+}
+
+void TestDelete::cleanupTestCase()
+{
+   {
+      QSqlDatabase sdb = QSqlDatabase::database(QSqlDatabase::defaultConnection);
+      if (sdb.isOpen())
+      {
+         sdb.close();
+      }
+   }
+
+   QSqlDatabase::removeDatabase(QSqlDatabase::defaultConnection);
+}
+
+void TestDelete::test_case1()
+{
+   try
+   {
+      Transaction t;
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount());
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+
+      t.deleteFrom("testTable").exec();
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, 0);
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+   }
+   catch (const DBException &e)
+   {
+      QFAIL(e.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestDelete::test_case2()
+{
+   try
+   {
+      Transaction t;
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount());
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+
+      t.deleteFrom("testTable").where("a=1");
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount() - 1);
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+   }
+   catch (const DBException &e)
+   {
+      QFAIL(e.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestDelete::test_case3()
+{
+   try
+   {
+      Transaction t;
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount());
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+
+      t.deleteFrom("testTable").where("a=?", 1);
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount() - 1);
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+
+      t.deleteFrom("testTable").where("a=? OR b=?", 1, 5);
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount() - 2);
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+
+      QCOMPARE(t.commited(), false);
+   }
+   catch (const DBException &e)
+   {
+      QFAIL(e.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestDelete::test_case4()
+{
+   try
+   {
+      Transaction t;
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount());
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+
+      t.deleteFrom("testTable").where("a=?", 1);
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount() - 1);
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+
+      t.deleteFrom("testTable").where("a=? OR b=?", 1, 5);
+
+      {
+         QueryResult res = t.execQuery("SELECT COUNT (*) FROM testTable");
+
+         if (res.next())
+         {
+            int count = -1;
+            res.fetchVars(count);
+
+            QCOMPARE(count, rowCount() - 2);
+         }
+         else
+         {
+            QFAIL(res.lastError().text().toStdString().c_str());
+         }
+      }
+
+      t.commit();
+
+      QCOMPARE(t.commited(), true);
+   }
+   catch (const DBException &e)
+   {
+      QFAIL(e.lastError.text().toStdString().c_str());
+   }
+
+   Transaction t2;
+   QueryResult res = t2.execQuery("SELECT COUNT (*) FROM testTable");
+
+   if (res.next())
+   {
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, rowCount() - 2);
+   }
+
+   QCOMPARE(t2.commited(), false);
+}
+
+QTEST_APPLESS_MAIN(TestDelete)
+
+#include "tst_testdelete.moc"

+ 11 - 0
QFD/EasyQtSql/Tests/TestInsert/TestInsert.pro

@@ -0,0 +1,11 @@
+QT += testlib sql
+QT -= gui
+
+include(../../EasyQtSql/EasyQtSql.pri)
+
+CONFIG += qt console warn_on depend_includepath testcase
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+SOURCES +=  tst_testinsert.cpp

+ 214 - 0
QFD/EasyQtSql/Tests/TestInsert/tst_testinsert.cpp

@@ -0,0 +1,214 @@
+#include <QtTest>
+#include "EasyQtSql.h"
+#include "../Shared/Shared.h"
+
+using namespace  EasyQtSql;
+
+class TestInsert : public QObject
+{
+   Q_OBJECT
+
+public:
+   TestInsert(){}
+   ~TestInsert(){}
+
+private slots:
+   void initTestCase();
+   void cleanupTestCase();
+   void test_case1();
+   void test_case2();
+   void test_case3();
+
+};
+
+void TestInsert::initTestCase()
+{
+   QLatin1Literal driverName("QSQLITE");
+
+   if (!QSqlDatabase::drivers().contains(driverName))
+       QFAIL("This test requires the SQLITE database driver");
+
+   QSqlDatabase sdb = QSqlDatabase::addDatabase(driverName);
+
+   sdb.setDatabaseName(":memory:");
+
+   if (!sdb.open())
+   {
+      QFAIL(sdb.lastError().text().toStdString().c_str());
+   }
+
+   try {
+
+      Transaction t(sdb);
+
+      t.execNonQuery("CREATE TABLE testTable (a int, b int, c int, d text)");
+
+      t.commit();
+
+   }
+   catch (const DBException &ex)
+   {
+      QFAIL(ex.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestInsert::cleanupTestCase()
+{
+   {
+      QSqlDatabase sdb = QSqlDatabase::database(QSqlDatabase::defaultConnection);
+      if (sdb.isOpen())
+      {
+         sdb.close();
+      }
+   }
+
+   QSqlDatabase::removeDatabase(QSqlDatabase::defaultConnection);
+}
+
+void TestInsert::test_case1()
+{
+   const QVector<Row> rows = { {1, 2, 3, "a"}, {4, 5, 6, "b"}, {7, 8, 9, "c"}, {10, 11, 12, "d"}};
+
+   try
+   {
+      Transaction t;
+
+      InsertQuery query = t.insertInto("testTable (a, b, c, d)");
+
+      query.values(rows[0].a, rows[0].b, rows[0].c, rows[0].d).exec();
+      query.values(rows[1].a, rows[1].b, rows[1].c, rows[1].d).exec();
+      query.values(rows[2].a, rows[2].b, rows[2].c, rows[2].d).exec();
+      query.values(rows[3].a, rows[3].b, rows[3].c, rows[3].d).exec();
+
+      QueryResult res = t.execQuery("SELECT COUNT(*) FROM testTable");
+
+      res.next();
+
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, 4);
+
+      res = t.execQuery("SELECT a, b, c, d FROM testTable");
+
+      int i = 0;
+      while (res.next())
+      {
+         int a, b, c;
+         QString d;
+
+         res.fetchVars(a, b, c, d);
+
+         QCOMPARE(a, rows[i].a);
+         QCOMPARE(b, rows[i].b);
+         QCOMPARE(c, rows[i].c);
+         QCOMPARE(d, rows[i].d);
+
+         ++i;
+      }
+
+      Database sdb;
+
+      QueryResult res1 = sdb.execQuery("SELECT a, b, c, d FROM testTable");
+
+      QCOMPARE(res1.next(), true);
+
+      //transaction rolled back
+   }
+   catch (const DBException &ex)
+   {
+      QFAIL(ex.lastError.text().toStdString().c_str());
+   }
+
+   Database sdb;
+
+   QueryResult res = sdb.execQuery("SELECT a, b, c, d FROM testTable");
+
+   QCOMPARE(res.next(), false);
+}
+
+void TestInsert::test_case2()
+{
+   const QVector<Row> rows = { {1, 2, 3, "a"}, {4, 5, 6, "b"}, {7, 8, 9, "c"}, {10, 11, 12, "d"}};
+
+   try
+   {
+      Transaction t;
+
+      InsertQuery query = t.insertInto("testTable (a, b, c, d)");
+
+      query.values(rows[0].a, rows[0].b, rows[0].c, rows[0].d)
+           .values(rows[1].a, rows[1].b, rows[1].c, rows[1].d)
+           .values(rows[2].a, rows[2].b, rows[2].c, rows[2].d)
+           .values(rows[3].a, rows[3].b, rows[3].c, rows[3].d).exec();
+
+      QueryResult res = t.execQuery("SELECT COUNT(*) FROM testTable");
+
+      res.next();
+
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, 4);
+
+      res = t.execQuery("SELECT a, b, c, d FROM testTable");
+
+      int i = 0;
+      while (res.next())
+      {
+         int a, b, c;
+         QString d;
+
+         res.fetchVars(a, b, c, d);
+
+         QCOMPARE(a, rows[i].a);
+         QCOMPARE(b, rows[i].b);
+         QCOMPARE(c, rows[i].c);
+         QCOMPARE(d, rows[i].d);
+
+         ++i;
+      }
+
+      Database sdb;
+
+      QueryResult res1 = sdb.execQuery("SELECT a, b, c, d FROM testTable");
+
+      QCOMPARE(res1.next(), true);
+
+      //transaction rolled back
+   }
+   catch (const DBException &ex)
+   {
+      QFAIL(ex.lastError.text().toStdString().c_str());
+   }
+
+   Database sdb;
+
+   QueryResult res = sdb.execQuery("SELECT a, b, c, d FROM testTable");
+
+   QCOMPARE(res.next(), false);
+}
+
+void TestInsert::test_case3()
+{
+   const QVector<Row> rows = { {1, 2, 3, "a"}, {4, 5, 6, "b"}, {7, 8, 9, "c"}, {10, 11, 12, "d"}};
+
+   QVERIFY_EXCEPTION_THROWN({
+      Transaction t;
+
+      InsertQuery query = t.insertInto("testTable (a, b, c, d)");
+
+      //parameters count mismatch
+      query.values(rows[0].a, rows[0].b, rows[0].c).exec();
+      query.values(rows[1].a, rows[1].b, rows[1].c).exec();
+      query.values(rows[2].a, rows[2].b, rows[2].c).exec();
+      query.values(rows[3].a, rows[3].b, rows[3].c).exec();
+
+      //transaction rolled back
+   }, DBException);
+}
+
+
+QTEST_APPLESS_MAIN(TestInsert)
+
+#include "tst_testinsert.moc"

+ 14 - 0
QFD/EasyQtSql/Tests/TestSelect/TestSelect.pro

@@ -0,0 +1,14 @@
+QT += testlib sql
+QT -= gui
+
+include(../../EasyQtSql/EasyQtSql.pri)
+
+CONFIG += qt console warn_on depend_includepath testcase
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+SOURCES +=  tst_testselect.cpp
+
+HEADERS += \
+    ../Shared/Shared.h

+ 740 - 0
QFD/EasyQtSql/Tests/TestSelect/tst_testselect.cpp

@@ -0,0 +1,740 @@
+#include <QtTest>
+#include <QMetaObject>
+#include "EasyQtSql.h"
+#include "../Shared/Shared.h"
+
+using namespace EasyQtSql;
+
+class TestSelect : public QObject
+{
+   Q_OBJECT
+
+private:
+
+   //====================================================
+   // Test data
+
+   const QList<Row> &testData() const
+   {
+      const static QList<Row> rows =
+      {  {1, 2, 3, "a"}
+       , {4, 5, 6, "b"}
+       , {7, 8, 9, "c"}
+      };
+
+      return rows;
+   }
+
+   //====================================================
+
+public:
+   TestSelect(){}
+   ~TestSelect(){}
+
+private slots:
+   void initTestCase();
+   void cleanupTestCase();
+   void test_case1();
+   void test_case2();
+   void test_case3();
+   void test_case4();
+   void test_case5();
+   void test_case6();
+   void test_case7();
+   void test_case8();
+   void test_case9();
+   void test_case10();
+   void test_case11();
+   void test_case12();
+   void test_case13();
+   void test_case14();
+   void test_case14_1();
+   void test_case15();
+   void test_case16();
+   void test_case17();
+
+private:
+
+   int colCount() const
+   {
+      static Row sampleRow;
+
+      return sampleRow.staticMetaObject.propertyCount();
+   }
+
+   int rowCount() const
+   {
+      return testData().count();
+   }
+
+   const char *selectABCDQuery = "SELECT a, b, c, d FROM testTable";
+};
+
+void TestSelect::initTestCase()
+{
+   QLatin1Literal driverName("QSQLITE");
+
+   if (!QSqlDatabase::drivers().contains(driverName))
+       QFAIL("This test requires the SQLITE database driver");
+
+   QSqlDatabase sdb = QSqlDatabase::addDatabase(driverName);
+
+   sdb.setDatabaseName(":memory:");
+
+   if (!sdb.open())
+   {
+      QFAIL(sdb.lastError().text().toStdString().c_str());
+   }
+
+   Transaction t(sdb);
+
+   t.execNonQuery("CREATE TABLE testTable (a int, b int, c int, d text)");
+
+   const auto &rows = testData();
+
+   //multi insert
+   NonQueryResult res1 = t.insertInto("testTable (a, b, c, d)")
+      .values(rows[0].a, rows[0].b, rows[0].c, rows[0].d)
+      .values(rows[1].a, rows[1].b, rows[1].c, rows[1].d)
+      .values(rows[2].a, rows[2].b, rows[2].c, rows[2].d)
+      .exec();
+
+   t.commit();
+}
+
+void TestSelect::cleanupTestCase()
+{
+   {
+      QSqlDatabase sdb = QSqlDatabase::database(QSqlDatabase::defaultConnection);
+      if (sdb.isOpen())
+      {
+         sdb.close();
+      }
+   }
+
+   QSqlDatabase::removeDatabase(QSqlDatabase::defaultConnection);
+}
+
+void TestSelect::test_case1() //row count
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery("SELECT COUNT(*) FROM testTable");
+
+   if (res.next())
+   {
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, rowCount());
+   }
+   else
+   {
+      QFAIL("No query result");
+   }
+}
+
+void TestSelect::test_case2() //col count
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery("SELECT * FROM testTable");
+
+   if (res.next())
+   {
+      QVariantList list;
+      res.fetchList(list);
+
+      QCOMPARE(list.count(), colCount());
+   }
+   else
+   {
+      QFAIL("No query result");
+   }
+}
+
+void TestSelect::test_case3() //select specified columns
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery("SELECT a, c FROM testTable");
+
+   if (res.next())
+   {
+      QVariantList list;
+      res.fetchList(list);
+
+      QCOMPARE(list.count(), 2); //two columns selected (a, c)
+   }
+   else
+   {
+      QFAIL("No query result");
+   }
+}
+
+void TestSelect::test_case4() //select rows with condition
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery("SELECT COUNT(*) FROM testTable WHERE a = 4 OR b = 8");
+
+   if (res.next())
+   {
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, 2); //2 rows expected (a = 4 OR b = 8)
+   }
+   else
+   {
+      QFAIL("No query result");
+   }
+}
+
+void TestSelect::test_case5() //select rows with condition (prepare stmt)
+{
+   Transaction t;
+
+   PreparedQuery query = t.prepare("SELECT COUNT(*) FROM testTable WHERE a = ? OR b = ?");
+
+   QueryResult res = query.exec(4, 8);
+
+   if (res.next())
+   {
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, 2); //2 rows expected (a = 4 OR b = 8)
+   }
+   else
+   {
+      QFAIL("No query result");
+   }
+}
+
+void TestSelect::test_case6() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      int a, b, c;
+      QString d;
+
+      res.fetchVars(a, b, c, d);
+
+      const Row &row = rows[i];
+
+      QCOMPARE(a, row.a);
+      QCOMPARE(b, row.b);
+      QCOMPARE(c, row.c);
+      QCOMPARE(d, row.d);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case7() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      QVariantList list;
+      res.fetchList(list);
+
+      const Row &row = rows[i];
+
+      QCOMPARE(list.value(0).toInt()   , row.a);
+      QCOMPARE(list.value(1).toInt()   , row.b);
+      QCOMPARE(list.value(2).toInt()   , row.c);
+      QCOMPARE(list.value(3).toString(), row.d);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case8() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      QVariantMap map;
+      res.fetchMap(map);
+
+      const Row &row = rows[i];
+
+      QCOMPARE(map.value("a").toInt()   , row.a);
+      QCOMPARE(map.value("b").toInt()   , row.b);
+      QCOMPARE(map.value("c").toInt()   , row.c);
+      QCOMPARE(map.value("d").toString(), row.d);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case9() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      QStringList list;
+      res.fetchStringList(list);
+
+      const Row &row = rows[i];
+
+      QCOMPARE(list.value(0), QString::number(row.a));
+      QCOMPARE(list.value(1), QString::number(row.b));
+      QCOMPARE(list.value(2), QString::number(row.c));
+      QCOMPARE(list.value(3), row.d);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case10() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      QVector<QVariant> vector;
+      res.fetchVector(vector);
+
+      const Row &row = rows[i];
+
+      QCOMPARE(vector.value(0).toInt()   , row.a);
+      QCOMPARE(vector.value(1).toInt()   , row.b);
+      QCOMPARE(vector.value(2).toInt()   , row.c);
+      QCOMPARE(vector.value(3).toString(), row.d);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case11() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      TestObject testRow;
+      res.fetchObject(testRow);
+
+      const Row &row = rows[i];
+
+      QCOMPARE(testRow.a, row.a);
+      QCOMPARE(testRow.b, row.b);
+      QCOMPARE(testRow.c, row.c);
+      QCOMPARE(testRow.d, row.d);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case12() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      Row testRow;
+      res.fetchGadget(testRow);
+
+      const Row &row = rows[i];
+
+      QCOMPARE(testRow.a, row.a);
+      QCOMPARE(testRow.b, row.b);
+      QCOMPARE(testRow.c, row.c);
+      QCOMPARE(testRow.d, row.d);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case13() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      const QVector<int> intVector = res.toVector<int>();
+
+      const Row &row = rows[i];
+
+      const QVector<int> expected = { row.a, row.b, row.c, row.d.toInt() };
+
+      QCOMPARE(intVector, expected);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case14() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      const QVector<int> intVector = res.parseToIntVector();
+
+      const Row &row = rows[i];
+
+      const QVector<int> expected = { row.a, row.b, row.c }; //string value d is not parseable with base 10 in this case (0xA, 0xB, 0xC)
+
+      qDebug() << intVector << expected;
+
+      QCOMPARE(intVector, expected);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case14_1() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      const QVector<int> intVector = res.parseToIntVector(16);
+
+      const Row &row = rows[i];
+
+      const QVector<int> expected = { row.a, row.b, row.c, row.d.toInt(Q_NULLPTR, 16) }; //string value d is parsible with base 16 ("a", "b", "c")
+
+      qDebug() << intVector << expected;
+
+      QCOMPARE(intVector, expected);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case15() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      const QVector<bool> boolVector = res.toVector<bool>();
+
+      const Row &row = rows[i];
+
+      const QVector<bool> expected = { QVariant(row.a).toBool(), QVariant(row.b).toBool(), QVariant(row.c).toBool(), QVariant(row.d).toBool() };
+
+      QCOMPARE(boolVector, expected);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case16() //fetch rows
+{
+   Transaction t;
+
+   QueryResult res = t.execQuery(selectABCDQuery);
+
+   const auto &rows = testData();
+
+   int i = 0;
+
+   while (res.next())
+   {
+      const QVector<QString> strVector = res.toVector<QString>();
+
+      const Row &row = rows[i];
+
+      const QVector<QString> expected = { QVariant(row.a).toString(), QVariant(row.b).toString(), QVariant(row.c).toString(), row.d };
+
+      QCOMPARE(strVector, expected);
+
+      i++;
+   }
+
+   QCOMPARE(i, rows.count());
+}
+
+void TestSelect::test_case17() //fetch rows
+{
+   Transaction t;
+
+   const auto &rows = testData();
+
+   {
+      int curRow = 0;
+      QVector<Row> actualRows;
+
+      const int count = t.each(selectABCDQuery, [&curRow, &rows, &actualRows](const QueryResult &row)
+      {
+         const auto &rowData = rows.at(curRow);
+
+         Row r;
+         r.a = row.value(0).toInt();
+         r.b = row.value(1).toInt();
+         r.c = row.value(2).toInt();
+         r.d = row.value(3).toString();
+
+         actualRows.append(r);
+
+         QCOMPARE(r.a, rowData.a);
+         QCOMPARE(r.b, rowData.b);
+         QCOMPARE(r.c, rowData.c);
+         QCOMPARE(r.d, rowData.d);
+
+         ++curRow;
+      });
+
+      QCOMPARE(count, rowCount());
+      QCOMPARE(actualRows.count(), rowCount());
+   }
+
+   {
+      const int count = t.first(selectABCDQuery, [&rows](const QueryResult &row)
+      {
+         const auto &rowData = rows.at(0);
+
+         QCOMPARE(row.value(0).toInt(), rowData.a);
+         QCOMPARE(row.value(1).toInt(), rowData.b);
+         QCOMPARE(row.value(2).toInt(), rowData.c);
+         QCOMPARE(row.value(3).toString(), rowData.d);
+      });
+
+      QCOMPARE(count, 1);
+   }
+
+   {
+      int curRow = 0;
+      const int topCount = 2;
+      QVector<Row> actualRows;
+
+      const int count = t.top(selectABCDQuery, topCount, [&curRow, &rows, &actualRows](const QueryResult &row)
+      {
+         const auto &rowData = rows.at(curRow);
+
+         Row r;
+         r.a = row.value(0).toInt();
+         r.b = row.value(1).toInt();
+         r.c = row.value(2).toInt();
+         r.d = row.value(3).toString();
+
+         actualRows.append(r);
+
+         QCOMPARE(r.a, rowData.a);
+         QCOMPARE(r.b, rowData.b);
+         QCOMPARE(r.c, rowData.c);
+         QCOMPARE(r.d, rowData.d);
+
+         ++curRow;
+      });
+
+      QCOMPARE(count, topCount);
+      QCOMPARE(actualRows.count(), topCount);
+   }
+
+   {
+      int curRow = 1;
+      const int resCount = 1;
+      QVector<Row> actualRows;
+
+      const int count = t.range(selectABCDQuery, curRow, resCount, [&curRow, &rows, &actualRows](const QueryResult &row)
+      {
+         const auto &rowData = rows.at(curRow);
+
+         qDebug() << row.toMap() << curRow;
+
+         Row r;
+         r.a = row.value(0).toInt();
+         r.b = row.value(1).toInt();
+         r.c = row.value(2).toInt();
+         r.d = row.value(3).toString();
+
+         actualRows.append(r);
+
+         QCOMPARE(r.a, rowData.a);
+         QCOMPARE(r.b, rowData.b);
+         QCOMPARE(r.c, rowData.c);
+         QCOMPARE(r.d, rowData.d);
+
+         ++curRow;
+      });
+
+      QCOMPARE(count, resCount);
+      QCOMPARE(actualRows.count(), resCount);
+   }
+
+   {
+      int curRow = 0;
+      const int resCount = 3;
+      QVector<Row> actualRows;
+
+      const int count = t.range(selectABCDQuery, curRow, resCount, [&curRow, &rows, &actualRows](const QueryResult &row)
+      {
+         const auto &rowData = rows.at(curRow);
+
+         qDebug() << row.toMap() << curRow;
+
+         Row r;
+         r.a = row.value(0).toInt();
+         r.b = row.value(1).toInt();
+         r.c = row.value(2).toInt();
+         r.d = row.value(3).toString();
+
+         actualRows.append(r);
+
+         QCOMPARE(r.a, rowData.a);
+         QCOMPARE(r.b, rowData.b);
+         QCOMPARE(r.c, rowData.c);
+         QCOMPARE(r.d, rowData.d);
+
+         ++curRow;
+      });
+
+      QCOMPARE(count, resCount);
+      QCOMPARE(actualRows.count(), resCount);
+   }
+
+   {
+      int curRow = 0;
+      const int resCount = 10;
+      QVector<Row> actualRows;
+
+      const int count = t.range(selectABCDQuery, curRow, resCount, [&curRow, &rows, &actualRows](const QueryResult &row)
+      {
+         const auto &rowData = rows.at(curRow);
+
+         qDebug() << row.toMap() << curRow;
+
+         Row r;
+         r.a = row.value(0).toInt();
+         r.b = row.value(1).toInt();
+         r.c = row.value(2).toInt();
+         r.d = row.value(3).toString();
+
+         actualRows.append(r);
+
+         QCOMPARE(r.a, rowData.a);
+         QCOMPARE(r.b, rowData.b);
+         QCOMPARE(r.c, rowData.c);
+         QCOMPARE(r.d, rowData.d);
+
+         ++curRow;
+      });
+
+      QCOMPARE(count, rowCount());
+      QCOMPARE(actualRows.count(), rowCount());
+   }
+
+   {
+      const int count = t.range(selectABCDQuery, 3, 10, [](const QueryResult &row)
+      {
+         Q_UNUSED(row);
+         QFAIL("UNSEXPECTED");
+      });
+
+      QCOMPARE(count, 0);
+   }
+
+   {
+      const int count = t.range(selectABCDQuery, 10, 10, [](const QueryResult &row)
+      {
+         Q_UNUSED(row);
+         QFAIL("UNSEXPECTED");
+      });
+
+      QCOMPARE(count, 0);
+   }
+}
+
+QTEST_APPLESS_MAIN(TestSelect)
+
+#include "tst_testselect.moc"

+ 11 - 0
QFD/EasyQtSql/Tests/TestUpdate/TestUpdate.pro

@@ -0,0 +1,11 @@
+QT += testlib sql
+QT -= gui
+
+include(../../EasyQtSql/EasyQtSql.pri)
+
+CONFIG += qt console warn_on depend_includepath testcase
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+SOURCES +=  tst_testupdate.cpp

+ 318 - 0
QFD/EasyQtSql/Tests/TestUpdate/tst_testupdate.cpp

@@ -0,0 +1,318 @@
+#include <QtTest>
+#include "EasyQtSql.h"
+#include "../Shared/Shared.h"
+
+using namespace EasyQtSql;
+
+class TestUpdate : public QObject
+{
+   Q_OBJECT
+
+public:
+   TestUpdate(){}
+   ~TestUpdate(){}
+
+private slots:
+   void initTestCase();
+   void cleanupTestCase();
+   void test_case1();
+   void test_case2();
+   void test_case3();
+
+};
+
+void TestUpdate::initTestCase()
+{
+   QLatin1Literal driverName("QSQLITE");
+
+   if (!QSqlDatabase::drivers().contains(driverName))
+       QFAIL("This test requires the SQLITE database driver");
+
+   QSqlDatabase sdb = QSqlDatabase::addDatabase(driverName);
+
+   sdb.setDatabaseName(":memory:");
+
+   if (!sdb.open())
+   {
+      QFAIL(sdb.lastError().text().toStdString().c_str());
+   }
+
+   try {
+
+      Transaction t(sdb);
+
+      t.execNonQuery("CREATE TABLE testTable (a int, b int, c int, d text)");
+
+      t.commit();
+
+   }
+   catch (const DBException &ex)
+   {
+      QFAIL(ex.lastError.text().toStdString().c_str());
+   }
+}
+
+void TestUpdate::cleanupTestCase()
+{
+   {
+      QSqlDatabase sdb = QSqlDatabase::database(QSqlDatabase::defaultConnection);
+      if (sdb.isOpen())
+      {
+         sdb.close();
+      }
+   }
+
+   QSqlDatabase::removeDatabase(QSqlDatabase::defaultConnection);
+}
+
+void TestUpdate::test_case1()
+{
+   const QVector<Row> rows = { {1, 2, 3, "a"}, {4, 5, 6, "b"}, {7, 8, 9, "c"}, {10, 11, 12, "d"}};
+
+   try
+   {
+      Transaction t;
+
+      InsertQuery query = t.insertInto("testTable (a, b, c, d)");
+
+      query.values(rows[0].a, rows[0].b, rows[0].c, rows[0].d)
+           .values(rows[1].a, rows[1].b, rows[1].c, rows[1].d)
+           .values(rows[2].a, rows[2].b, rows[2].c, rows[2].d)
+           .values(rows[3].a, rows[3].b, rows[3].c, rows[3].d).exec();
+
+      QueryResult res = t.execQuery("SELECT COUNT(*) FROM testTable");
+
+      res.next();
+
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, 4);
+
+      {
+         res = t.execQuery("SELECT a, b, c, d FROM testTable");
+
+         int i = 0;
+         while (res.next())
+         {
+            int a, b, c;
+            QString d;
+
+            res.fetchVars(a, b, c, d);
+
+            QCOMPARE(a, rows[i].a);
+            QCOMPARE(b, rows[i].b);
+            QCOMPARE(c, rows[i].c);
+            QCOMPARE(d, rows[i].d);
+
+            ++i;
+         }
+      }
+
+      {
+         t.update("testTable").set("a", 10).set("b", 20).set("c", 30).exec();
+
+         res = t.execQuery("SELECT a, b, c, d FROM testTable");
+
+         int i = 0;
+         while (res.next())
+         {
+            int a, b, c;
+            QString d;
+
+            res.fetchVars(a, b, c, d);
+
+            qDebug() << res.toMap();
+
+            QCOMPARE(a, 10);
+            QCOMPARE(b, 20);
+            QCOMPARE(c, 30);
+            QCOMPARE(d, rows[i].d);
+
+            ++i;
+         }
+      }
+
+      //transaction rolled back
+   }
+   catch (const DBException &ex)
+   {
+      QFAIL(ex.lastError.text().toStdString().c_str());
+   }
+
+   Database sdb;
+
+   QueryResult res = sdb.execQuery("SELECT a, b, c, d FROM testTable");
+
+   QCOMPARE(res.next(), false);
+}
+
+void TestUpdate::test_case2()
+{
+   const QVector<Row> rows = { {1, 2, 3, "a"}, {4, 5, 6, "b"}, {7, 8, 9, "c"}, {10, 11, 12, "d"}};
+   const QVector<Row> expd = { {10, 20, 30, "a"}, {10, 20, 30, "b"}, {7, 8, 9, "c"}, {10, 11, 12, "d"}};
+
+   try
+   {
+      Transaction t;
+
+      InsertQuery query = t.insertInto("testTable (a, b, c, d)");
+
+      query.values(rows[0].a, rows[0].b, rows[0].c, rows[0].d)
+           .values(rows[1].a, rows[1].b, rows[1].c, rows[1].d)
+           .values(rows[2].a, rows[2].b, rows[2].c, rows[2].d)
+           .values(rows[3].a, rows[3].b, rows[3].c, rows[3].d).exec();
+
+      QueryResult res = t.execQuery("SELECT COUNT(*) FROM testTable");
+
+      res.next();
+
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, 4);
+
+      {
+         res = t.execQuery("SELECT a, b, c, d FROM testTable");
+
+         int i = 0;
+         while (res.next())
+         {
+            int a, b, c;
+            QString d;
+
+            res.fetchVars(a, b, c, d);
+
+            QCOMPARE(a, rows[i].a);
+            QCOMPARE(b, rows[i].b);
+            QCOMPARE(c, rows[i].c);
+            QCOMPARE(d, rows[i].d);
+
+            ++i;
+         }
+      }
+
+      {
+         t.update("testTable").set("a", 10).set("b", 20).set("c", 30).where("a=? OR a=?", 1, 4);
+
+         res = t.execQuery("SELECT a, b, c, d FROM testTable");
+
+         int i = 0;
+         while (res.next())
+         {
+            int a, b, c;
+            QString d;
+
+            res.fetchVars(a, b, c, d);
+
+            qDebug() << res.toMap();
+
+            QCOMPARE(a, expd[i].a);
+            QCOMPARE(b, expd[i].b);
+            QCOMPARE(c, expd[i].c);
+            QCOMPARE(d, expd[i].d);
+
+            ++i;
+         }
+      }
+
+      //transaction rolled back
+   }
+   catch (const DBException &ex)
+   {
+      QFAIL(ex.lastError.text().toStdString().c_str());
+   }
+
+   Database sdb;
+
+   QueryResult res = sdb.execQuery("SELECT a, b, c, d FROM testTable");
+
+   QCOMPARE(res.next(), false);
+}
+
+void TestUpdate::test_case3()
+{
+   const QVector<Row> rows = { {1, 2, 3, "a"}, {4, 5, 6, "b"}, {7, 8, 9, "c"}, {10, 11, 12, "d"}};
+   const QVector<Row> expd = { {10, 20, 30, "a"}, {10, 20, 30, "b"}, {7, 8, 9, "c"}, {10, 11, 12, "d"}};
+
+   try
+   {
+      Transaction t;
+
+      InsertQuery query = t.insertInto("testTable (a, b, c, d)");
+
+      query.values(rows[0].a, rows[0].b, rows[0].c, rows[0].d)
+           .values(rows[1].a, rows[1].b, rows[1].c, rows[1].d)
+           .values(rows[2].a, rows[2].b, rows[2].c, rows[2].d)
+           .values(rows[3].a, rows[3].b, rows[3].c, rows[3].d).exec();
+
+      QueryResult res = t.execQuery("SELECT COUNT(*) FROM testTable");
+
+      res.next();
+
+      int count = -1;
+      res.fetchVars(count);
+
+      QCOMPARE(count, 4);
+
+      {
+         res = t.execQuery("SELECT a, b, c, d FROM testTable");
+
+         int i = 0;
+         while (res.next())
+         {
+            int a, b, c;
+            QString d;
+
+            res.fetchVars(a, b, c, d);
+
+            QCOMPARE(a, rows[i].a);
+            QCOMPARE(b, rows[i].b);
+            QCOMPARE(c, rows[i].c);
+            QCOMPARE(d, rows[i].d);
+
+            ++i;
+         }
+      }
+
+      {
+         t.update("testTable").set("a", 10).set("b", 20).set("c", 30).where("a = 1 OR a = 4");
+
+         res = t.execQuery("SELECT a, b, c, d FROM testTable");
+
+         int i = 0;
+         while (res.next())
+         {
+            int a, b, c;
+            QString d;
+
+            res.fetchVars(a, b, c, d);
+
+            qDebug() << res.toMap();
+
+            QCOMPARE(a, expd[i].a);
+            QCOMPARE(b, expd[i].b);
+            QCOMPARE(c, expd[i].c);
+            QCOMPARE(d, expd[i].d);
+
+            ++i;
+         }
+      }
+
+      //transaction rolled back
+   }
+   catch (const DBException &ex)
+   {
+      QFAIL(ex.lastError.text().toStdString().c_str());
+   }
+
+   Database sdb;
+
+   QueryResult res = sdb.execQuery("SELECT a, b, c, d FROM testTable");
+
+   QCOMPARE(res.next(), false);
+}
+
+QTEST_APPLESS_MAIN(TestUpdate)
+
+#include "tst_testupdate.moc"

+ 8 - 0
QFD/EasyQtSql/Tests/Tests.pro

@@ -0,0 +1,8 @@
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    TestDDL \
+    TestSelect \
+    TestDelete \
+    TestInsert \
+    TestUpdate

+ 0 - 0
QFD/EasyQtSql/docs/.nojekyll


+ 209 - 0
QFD/EasyQtSql/docs/_easy_qt_sql_8h.htm

@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Main <a class="el" href="namespace_easy_qt_sql.htm" title="Easy SQL data access helper for QtSql. ">EasyQtSql</a> header file.  
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___sql_factory_8h_source.htm">EasyQtSql_SqlFactory.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___d_b_exception_8h_source.htm">EasyQtSql_DBException.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___param_direction_wrapper_8h_source.htm">EasyQtSql_ParamDirectionWrapper.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___non_query_result_8h_source.htm">EasyQtSql_NonQueryResult.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___query_result_8h_source.htm">EasyQtSql_QueryResult.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___prepared_query_8h_source.htm">EasyQtSql_PreparedQuery.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___insert_query_8h_source.htm">EasyQtSql_InsertQuery.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___update_query_8h_source.htm">EasyQtSql_UpdateQuery.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___delete_query_8h_source.htm">EasyQtSql_DeleteQuery.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___transaction_8h_source.htm">EasyQtSql_Transaction.h</a>&quot;</code><br />
+</div>
+<p><a href="_easy_qt_sql_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_sql_factory.htm">EasyQtSql::SqlFactory</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_easy_qt_sql_1_1_sql_factory_1_1_d_b_setting.htm">EasyQtSql::SqlFactory::DBSetting</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_sql_factory_1_1_thread_d_b_pool.htm">EasyQtSql::SqlFactory::ThreadDBPool</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exception class for SQL errors handling.  <a href="class_easy_qt_sql_1_1_d_b_exception.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_easy_qt_sql_1_1_param_direction_wrapper.htm">EasyQtSql::ParamDirectionWrapper</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base parameters wrapper struct.  <a href="struct_easy_qt_sql_1_1_param_direction_wrapper.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_easy_qt_sql_1_1_in.htm">EasyQtSql::In</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input SQL parameters wrapper.  <a href="struct_easy_qt_sql_1_1_in.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_easy_qt_sql_1_1_out.htm">EasyQtSql::Out</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output SQL parameters wrapper.  <a href="struct_easy_qt_sql_1_1_out.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_easy_qt_sql_1_1_in_out.htm">EasyQtSql::InOut</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bidirectional SQL parameters wrapper.  <a href="struct_easy_qt_sql_1_1_in_out.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper for non-select query results reading.  <a href="class_easy_qt_sql_1_1_non_query_result.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper with handy data fetch methods.  <a href="class_easy_qt_sql_1_1_query_result.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for query preparation and execution.  <a href="class_easy_qt_sql_1_1_prepared_query.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">EasyQtSql::InsertQuery</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper for <em>INSERT INTO table</em> query execution.  <a href="class_easy_qt_sql_1_1_insert_query.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_update_query.htm">EasyQtSql::UpdateQuery</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper for <em>UPDATE ... SET ... WHERE ...</em> query execution.  <a href="class_easy_qt_sql_1_1_update_query.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">EasyQtSql::DeleteQuery</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution.  <a href="class_easy_qt_sql_1_1_delete_query.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_util.htm">EasyQtSql::Util</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility functions.  <a href="class_easy_qt_sql_1_1_util.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlDatabase wrapper.  <a href="class_easy_qt_sql_1_1_database.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_transaction.htm">EasyQtSql::Transaction</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlDatabase transaction wrapper.  <a href="class_easy_qt_sql_1_1_transaction.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespace_easy_qt_sql"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_easy_qt_sql.htm">EasyQtSql</a></td></tr>
+<tr class="memdesc:namespace_easy_qt_sql"><td class="mdescLeft">&#160;</td><td class="mdescRight">Easy SQL data access helper for QtSql. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a3fe9168ca9c0b1bfd736b4ee04915da0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#a3fe9168ca9c0b1bfd736b4ee04915da0">DB_EXCEPTIONS_ENABLED</a></td></tr>
+<tr class="memdesc:a3fe9168ca9c0b1bfd736b4ee04915da0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Undefine to disable <a class="el" href="namespace_easy_qt_sql.htm" title="Easy SQL data access helper for QtSql. ">EasyQtSql</a> exceptions (<a class="el" href="class_d_b_exception.htm" title="Exception class for SQL errors handling. ">DBException</a>) globally.  <a href="#a3fe9168ca9c0b1bfd736b4ee04915da0">More...</a><br /></td></tr>
+<tr class="separator:a3fe9168ca9c0b1bfd736b4ee04915da0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Main <a class="el" href="namespace_easy_qt_sql.htm" title="Easy SQL data access helper for QtSql. ">EasyQtSql</a> header file. </p>
+<p>To use all the <a class="el" href="namespace_easy_qt_sql.htm" title="Easy SQL data access helper for QtSql. ">EasyQtSql</a> features just include this header file into your project </p><dl class="section warning"><dt>Warning</dt><dd>Please use <a class="el" href="_easy_qt_sql_8h.htm" title="Main EasyQtSql header file. ">EasyQtSql.h</a> file only! You should never include any of EasyQtSql_*.h files. </dd></dl>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a3fe9168ca9c0b1bfd736b4ee04915da0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3fe9168ca9c0b1bfd736b4ee04915da0">&#9670;&nbsp;</a></span>DB_EXCEPTIONS_ENABLED</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DB_EXCEPTIONS_ENABLED</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Undefine to disable <a class="el" href="namespace_easy_qt_sql.htm" title="Easy SQL data access helper for QtSql. ">EasyQtSql</a> exceptions (<a class="el" href="class_d_b_exception.htm" title="Exception class for SQL errors handling. ">DBException</a>) globally. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql_8h.htm">EasyQtSql.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 21 - 0
QFD/EasyQtSql/docs/_easy_qt_sql_8h.js

@@ -0,0 +1,21 @@
+var _easy_qt_sql_8h =
+[
+    [ "SqlFactory", "class_easy_qt_sql_1_1_sql_factory.htm", "class_easy_qt_sql_1_1_sql_factory" ],
+    [ "DBSetting", "struct_easy_qt_sql_1_1_sql_factory_1_1_d_b_setting.htm", "struct_easy_qt_sql_1_1_sql_factory_1_1_d_b_setting" ],
+    [ "ThreadDBPool", "class_easy_qt_sql_1_1_sql_factory_1_1_thread_d_b_pool.htm", "class_easy_qt_sql_1_1_sql_factory_1_1_thread_d_b_pool" ],
+    [ "DBException", "class_easy_qt_sql_1_1_d_b_exception.htm", "class_easy_qt_sql_1_1_d_b_exception" ],
+    [ "ParamDirectionWrapper", "struct_easy_qt_sql_1_1_param_direction_wrapper.htm", "struct_easy_qt_sql_1_1_param_direction_wrapper" ],
+    [ "In", "struct_easy_qt_sql_1_1_in.htm", "struct_easy_qt_sql_1_1_in" ],
+    [ "Out", "struct_easy_qt_sql_1_1_out.htm", "struct_easy_qt_sql_1_1_out" ],
+    [ "InOut", "struct_easy_qt_sql_1_1_in_out.htm", "struct_easy_qt_sql_1_1_in_out" ],
+    [ "NonQueryResult", "class_easy_qt_sql_1_1_non_query_result.htm", "class_easy_qt_sql_1_1_non_query_result" ],
+    [ "QueryResult", "class_easy_qt_sql_1_1_query_result.htm", "class_easy_qt_sql_1_1_query_result" ],
+    [ "PreparedQuery", "class_easy_qt_sql_1_1_prepared_query.htm", "class_easy_qt_sql_1_1_prepared_query" ],
+    [ "InsertQuery", "class_easy_qt_sql_1_1_insert_query.htm", "class_easy_qt_sql_1_1_insert_query" ],
+    [ "UpdateQuery", "class_easy_qt_sql_1_1_update_query.htm", "class_easy_qt_sql_1_1_update_query" ],
+    [ "DeleteQuery", "class_easy_qt_sql_1_1_delete_query.htm", "class_easy_qt_sql_1_1_delete_query" ],
+    [ "Util", "class_easy_qt_sql_1_1_util.htm", null ],
+    [ "Database", "class_easy_qt_sql_1_1_database.htm", "class_easy_qt_sql_1_1_database" ],
+    [ "Transaction", "class_easy_qt_sql_1_1_transaction.htm", "class_easy_qt_sql_1_1_transaction" ],
+    [ "DB_EXCEPTIONS_ENABLED", "_easy_qt_sql_8h.htm#a3fe9168ca9c0b1bfd736b4ee04915da0", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql_8h_source.htm


+ 138 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___d_b_exception_8h.htm

@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_DBException.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___d_b_exception_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_DBException.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+</div>
+<p><a href="_easy_qt_sql___d_b_exception_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm">DBException</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exception class for SQL errors handling.  <a href="class_d_b_exception.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a43d584c4ce465f3d5604d262998cd882"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#a43d584c4ce465f3d5604d262998cd882">EASYQTSQL_DBEXCEPTION_H</a></td></tr>
+<tr class="separator:a43d584c4ce465f3d5604d262998cd882"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a43d584c4ce465f3d5604d262998cd882"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43d584c4ce465f3d5604d262998cd882">&#9670;&nbsp;</a></span>EASYQTSQL_DBEXCEPTION_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_DBEXCEPTION_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___d_b_exception_8h.htm">EasyQtSql_DBException.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___d_b_exception_8h.js

@@ -0,0 +1,5 @@
+var _easy_qt_sql___d_b_exception_8h =
+[
+    [ "DBException", "class_d_b_exception.htm", "class_d_b_exception" ],
+    [ "EASYQTSQL_DBEXCEPTION_H", "_easy_qt_sql_8h.htm#a43d584c4ce465f3d5604d262998cd882", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___d_b_exception_8h_source.htm


+ 139 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___delete_query_8h.htm

@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_DeleteQuery.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___delete_query_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_DeleteQuery.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___non_query_result_8h_source.htm">EasyQtSql_NonQueryResult.h</a>&quot;</code><br />
+</div>
+<p><a href="_easy_qt_sql___delete_query_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_delete_query.htm">DeleteQuery</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution.  <a href="class_delete_query.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a3c2ccaf4458a2595444bdca6181a597f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#a3c2ccaf4458a2595444bdca6181a597f">EASYQTSQL_DELETEQUERY_H</a></td></tr>
+<tr class="separator:a3c2ccaf4458a2595444bdca6181a597f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a3c2ccaf4458a2595444bdca6181a597f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3c2ccaf4458a2595444bdca6181a597f">&#9670;&nbsp;</a></span>EASYQTSQL_DELETEQUERY_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_DELETEQUERY_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___delete_query_8h.htm">EasyQtSql_DeleteQuery.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___delete_query_8h.js

@@ -0,0 +1,5 @@
+var _easy_qt_sql___delete_query_8h =
+[
+    [ "DeleteQuery", "class_delete_query.htm", "class_delete_query" ],
+    [ "EASYQTSQL_DELETEQUERY_H", "_easy_qt_sql_8h.htm#a3c2ccaf4458a2595444bdca6181a597f", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___delete_query_8h_source.htm


+ 139 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___insert_query_8h.htm

@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_InsertQuery.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___insert_query_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_InsertQuery.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___non_query_result_8h_source.htm">EasyQtSql_NonQueryResult.h</a>&quot;</code><br />
+</div>
+<p><a href="_easy_qt_sql___insert_query_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_insert_query.htm">InsertQuery</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper for <em>INSERT INTO table</em> query execution.  <a href="class_insert_query.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:aa361c3f6c397b3f1b0e8b9b9ac87c9d6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#aa361c3f6c397b3f1b0e8b9b9ac87c9d6">EASYQTSQL_INSERTQUERY_H</a></td></tr>
+<tr class="separator:aa361c3f6c397b3f1b0e8b9b9ac87c9d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="aa361c3f6c397b3f1b0e8b9b9ac87c9d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa361c3f6c397b3f1b0e8b9b9ac87c9d6">&#9670;&nbsp;</a></span>EASYQTSQL_INSERTQUERY_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_INSERTQUERY_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___insert_query_8h.htm">EasyQtSql_InsertQuery.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___insert_query_8h.js

@@ -0,0 +1,5 @@
+var _easy_qt_sql___insert_query_8h =
+[
+    [ "InsertQuery", "class_insert_query.htm", "class_insert_query" ],
+    [ "EASYQTSQL_INSERTQUERY_H", "_easy_qt_sql_8h.htm#aa361c3f6c397b3f1b0e8b9b9ac87c9d6", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___insert_query_8h_source.htm


+ 138 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___non_query_result_8h.htm

@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_NonQueryResult.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___non_query_result_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_NonQueryResult.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+</div>
+<p><a href="_easy_qt_sql___non_query_result_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_query_result.htm">NonQueryResult</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper for non-select query results reading.  <a href="class_non_query_result.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a7feb46f45c5a841a603abac69d64584d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#a7feb46f45c5a841a603abac69d64584d">EASYQTSQL_NONQUERYRESULT_H</a></td></tr>
+<tr class="separator:a7feb46f45c5a841a603abac69d64584d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a7feb46f45c5a841a603abac69d64584d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7feb46f45c5a841a603abac69d64584d">&#9670;&nbsp;</a></span>EASYQTSQL_NONQUERYRESULT_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_NONQUERYRESULT_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___non_query_result_8h.htm">EasyQtSql_NonQueryResult.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___non_query_result_8h.js

@@ -0,0 +1,5 @@
+var _easy_qt_sql___non_query_result_8h =
+[
+    [ "NonQueryResult", "class_non_query_result.htm", "class_non_query_result" ],
+    [ "EASYQTSQL_NONQUERYRESULT_H", "_easy_qt_sql_8h.htm#a7feb46f45c5a841a603abac69d64584d", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___non_query_result_8h_source.htm


+ 147 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___param_direction_wrapper_8h.htm

@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_ParamDirectionWrapper.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___param_direction_wrapper_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_ParamDirectionWrapper.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtCore&gt;</code><br />
+</div>
+<p><a href="_easy_qt_sql___param_direction_wrapper_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_param_direction_wrapper.htm">ParamDirectionWrapper</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base parameters wrapper struct.  <a href="struct_param_direction_wrapper.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_in.htm">In</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input SQL parameters wrapper.  <a href="struct_in.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_out.htm">Out</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output SQL parameters wrapper.  <a href="struct_out.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_in_out.htm">InOut</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bidirectional SQL parameters wrapper.  <a href="struct_in_out.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a10b3c74a81138a6321cc68e866d8aa79"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#a10b3c74a81138a6321cc68e866d8aa79">EASYQTSQL_PARAMETERWRAPPER_H</a></td></tr>
+<tr class="separator:a10b3c74a81138a6321cc68e866d8aa79"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a10b3c74a81138a6321cc68e866d8aa79"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a10b3c74a81138a6321cc68e866d8aa79">&#9670;&nbsp;</a></span>EASYQTSQL_PARAMETERWRAPPER_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_PARAMETERWRAPPER_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___param_direction_wrapper_8h.htm">EasyQtSql_ParamDirectionWrapper.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 8 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___param_direction_wrapper_8h.js

@@ -0,0 +1,8 @@
+var _easy_qt_sql___param_direction_wrapper_8h =
+[
+    [ "ParamDirectionWrapper", "struct_param_direction_wrapper.htm", "struct_param_direction_wrapper" ],
+    [ "In", "struct_in.htm", "struct_in" ],
+    [ "Out", "struct_out.htm", "struct_out" ],
+    [ "InOut", "struct_in_out.htm", "struct_in_out" ],
+    [ "EASYQTSQL_PARAMETERWRAPPER_H", "_easy_qt_sql_8h.htm#a10b3c74a81138a6321cc68e866d8aa79", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___param_direction_wrapper_8h_source.htm


+ 140 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___prepared_query_8h.htm

@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_PreparedQuery.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___prepared_query_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_PreparedQuery.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___query_result_8h_source.htm">EasyQtSql_QueryResult.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___param_direction_wrapper_8h_source.htm">EasyQtSql_ParamDirectionWrapper.h</a>&quot;</code><br />
+</div>
+<p><a href="_easy_qt_sql___prepared_query_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_prepared_query.htm">PreparedQuery</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for query preparation and execution.  <a href="class_prepared_query.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:afe504aa87e9f3ebedfbcc4f4bd9e00f8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#afe504aa87e9f3ebedfbcc4f4bd9e00f8">EASYQTSQL_PREPAREDQUERY_H</a></td></tr>
+<tr class="separator:afe504aa87e9f3ebedfbcc4f4bd9e00f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="afe504aa87e9f3ebedfbcc4f4bd9e00f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afe504aa87e9f3ebedfbcc4f4bd9e00f8">&#9670;&nbsp;</a></span>EASYQTSQL_PREPAREDQUERY_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_PREPAREDQUERY_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___prepared_query_8h.htm">EasyQtSql_PreparedQuery.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___prepared_query_8h.js

@@ -0,0 +1,5 @@
+var _easy_qt_sql___prepared_query_8h =
+[
+    [ "PreparedQuery", "class_prepared_query.htm", "class_prepared_query" ],
+    [ "EASYQTSQL_PREPAREDQUERY_H", "_easy_qt_sql_8h.htm#afe504aa87e9f3ebedfbcc4f4bd9e00f8", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___prepared_query_8h_source.htm


+ 139 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___query_result_8h.htm

@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_QueryResult.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___query_result_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_QueryResult.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___non_query_result_8h_source.htm">EasyQtSql_NonQueryResult.h</a>&quot;</code><br />
+</div>
+<p><a href="_easy_qt_sql___query_result_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_query_result.htm">QueryResult</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper with handy data fetch methods.  <a href="class_query_result.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a7d404a4d2524604711b5065ff93741fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#a7d404a4d2524604711b5065ff93741fc">EASYQTSQL_QUERYRESULT_H</a></td></tr>
+<tr class="separator:a7d404a4d2524604711b5065ff93741fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a7d404a4d2524604711b5065ff93741fc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7d404a4d2524604711b5065ff93741fc">&#9670;&nbsp;</a></span>EASYQTSQL_QUERYRESULT_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_QUERYRESULT_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___query_result_8h.htm">EasyQtSql_QueryResult.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___query_result_8h.js

@@ -0,0 +1,5 @@
+var _easy_qt_sql___query_result_8h =
+[
+    [ "QueryResult", "class_query_result.htm", "class_query_result" ],
+    [ "EASYQTSQL_QUERYRESULT_H", "_easy_qt_sql_8h.htm#a7d404a4d2524604711b5065ff93741fc", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___query_result_8h_source.htm


+ 142 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___sql_factory_8h.htm

@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_SqlFactory.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___sql_factory_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_SqlFactory.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+<code>#include &lt;QException&gt;</code><br />
+</div>
+<p><a href="_easy_qt_sql___sql_factory_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_sql_factory.htm">SqlFactory</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_sql_factory_1_1_d_b_setting.htm">SqlFactory::DBSetting</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_sql_factory_1_1_thread_d_b_pool.htm">SqlFactory::ThreadDBPool</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a3efce1a4a2e0b682ccdb58946a67420d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#a3efce1a4a2e0b682ccdb58946a67420d">EASYQTSQL_SQLFACTORY_H</a></td></tr>
+<tr class="separator:a3efce1a4a2e0b682ccdb58946a67420d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a3efce1a4a2e0b682ccdb58946a67420d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3efce1a4a2e0b682ccdb58946a67420d">&#9670;&nbsp;</a></span>EASYQTSQL_SQLFACTORY_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_SQLFACTORY_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___sql_factory_8h.htm">EasyQtSql_SqlFactory.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 7 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___sql_factory_8h.js

@@ -0,0 +1,7 @@
+var _easy_qt_sql___sql_factory_8h =
+[
+    [ "SqlFactory", "class_sql_factory.htm", "class_sql_factory" ],
+    [ "DBSetting", "struct_sql_factory_1_1_d_b_setting.htm", "struct_sql_factory_1_1_d_b_setting" ],
+    [ "ThreadDBPool", "class_sql_factory_1_1_thread_d_b_pool.htm", "class_sql_factory_1_1_thread_d_b_pool" ],
+    [ "EASYQTSQL_SQLFACTORY_H", "_easy_qt_sql_8h.htm#a3efce1a4a2e0b682ccdb58946a67420d", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___sql_factory_8h_source.htm


+ 148 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___transaction_8h.htm

@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_Transaction.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___transaction_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_Transaction.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___d_b_exception_8h_source.htm">EasyQtSql_DBException.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___non_query_result_8h_source.htm">EasyQtSql_NonQueryResult.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___insert_query_8h_source.htm">EasyQtSql_InsertQuery.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___delete_query_8h_source.htm">EasyQtSql_DeleteQuery.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___update_query_8h_source.htm">EasyQtSql_UpdateQuery.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___prepared_query_8h_source.htm">EasyQtSql_PreparedQuery.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___util_8h_source.htm">EasyQtSql_Util.h</a>&quot;</code><br />
+</div>
+<p><a href="_easy_qt_sql___transaction_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm">Database</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlDatabase wrapper.  <a href="class_database.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_transaction.htm">Transaction</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlDatabase transaction wrapper.  <a href="class_transaction.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a09702dfa9c95f590c83a984d268e1d57"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#a09702dfa9c95f590c83a984d268e1d57">EASYQTSQL_TRANSACTION_H</a></td></tr>
+<tr class="separator:a09702dfa9c95f590c83a984d268e1d57"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a09702dfa9c95f590c83a984d268e1d57"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a09702dfa9c95f590c83a984d268e1d57">&#9670;&nbsp;</a></span>EASYQTSQL_TRANSACTION_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_TRANSACTION_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___transaction_8h.htm">EasyQtSql_Transaction.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 6 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___transaction_8h.js

@@ -0,0 +1,6 @@
+var _easy_qt_sql___transaction_8h =
+[
+    [ "Database", "class_database.htm", "class_database" ],
+    [ "Transaction", "class_transaction.htm", "class_transaction" ],
+    [ "EASYQTSQL_TRANSACTION_H", "_easy_qt_sql_8h.htm#a09702dfa9c95f590c83a984d268e1d57", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___transaction_8h_source.htm


+ 139 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___update_query_8h.htm

@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_UpdateQuery.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___update_query_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_UpdateQuery.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QtSql&gt;</code><br />
+<code>#include &quot;<a class="el" href="_easy_qt_sql___non_query_result_8h_source.htm">EasyQtSql_NonQueryResult.h</a>&quot;</code><br />
+</div>
+<p><a href="_easy_qt_sql___update_query_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_update_query.htm">UpdateQuery</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">QSqlQuery wrapper for <em>UPDATE ... SET ... WHERE ...</em> query execution.  <a href="class_update_query.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:afe0703d0295b7be53c6cf0b765ff02df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#afe0703d0295b7be53c6cf0b765ff02df">EASYQTSQL_UPDATEQUERY_H</a></td></tr>
+<tr class="separator:afe0703d0295b7be53c6cf0b765ff02df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="afe0703d0295b7be53c6cf0b765ff02df"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afe0703d0295b7be53c6cf0b765ff02df">&#9670;&nbsp;</a></span>EASYQTSQL_UPDATEQUERY_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_UPDATEQUERY_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___update_query_8h.htm">EasyQtSql_UpdateQuery.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___update_query_8h.js

@@ -0,0 +1,5 @@
+var _easy_qt_sql___update_query_8h =
+[
+    [ "UpdateQuery", "class_update_query.htm", "class_update_query" ],
+    [ "EASYQTSQL_UPDATEQUERY_H", "_easy_qt_sql_8h.htm#afe0703d0295b7be53c6cf0b765ff02df", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___update_query_8h_source.htm


+ 138 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___util_8h.htm

@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/EasyQtSql_Util.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_easy_qt_sql___util_8h.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql_Util.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="_easy_qt_sql___query_result_8h_source.htm">EasyQtSql_QueryResult.h</a>&quot;</code><br />
+</div>
+<p><a href="_easy_qt_sql___util_8h_source.htm">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_util.htm">Util</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility functions.  <a href="class_util.htm#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ac1e8b4f6a998a01052381b45ae1a081e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_easy_qt_sql_8h.htm#ac1e8b4f6a998a01052381b45ae1a081e">EASYQTSQL_UTIL_H</a></td></tr>
+<tr class="separator:ac1e8b4f6a998a01052381b45ae1a081e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ac1e8b4f6a998a01052381b45ae1a081e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac1e8b4f6a998a01052381b45ae1a081e">&#9670;&nbsp;</a></span>EASYQTSQL_UTIL_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EASYQTSQL_UTIL_H</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_ccd1b38e141953c502dde9cd8646e4d8.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="_easy_qt_sql___util_8h.htm">EasyQtSql_Util.h</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___util_8h.js

@@ -0,0 +1,5 @@
+var _easy_qt_sql___util_8h =
+[
+    [ "Util", "class_util.htm", null ],
+    [ "EASYQTSQL_UTIL_H", "_easy_qt_sql_8h.htm#ac1e8b4f6a998a01052381b45ae1a081e", null ]
+];

File diff suppressed because it is too large
+ 92 - 0
QFD/EasyQtSql/docs/_easy_qt_sql___util_8h_source.htm


+ 105 - 0
QFD/EasyQtSql/docs/_mainpage_8dox.htm

@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql/Mainpage.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('_mainpage_8dox.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">EasyQtSql/Mainpage.dox File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="_mainpage_8dox.htm">Mainpage.dox</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 143 - 0
QFD/EasyQtSql/docs/annotated.htm

@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Class List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('annotated.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Class List</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_easy_qt_sql.htm" target="_self">EasyQtSql</a></td><td class="desc">Easy SQL data access helper for QtSql </td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_database.htm" target="_self">Database</a></td><td class="desc">QSqlDatabase wrapper </td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm" target="_self">DBException</a></td><td class="desc">Exception class for SQL errors handling </td></tr>
+<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm" target="_self">DeleteQuery</a></td><td class="desc">QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution </td></tr>
+<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_easy_qt_sql_1_1_in.htm" target="_self">In</a></td><td class="desc">Input SQL parameters wrapper </td></tr>
+<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_easy_qt_sql_1_1_in_out.htm" target="_self">InOut</a></td><td class="desc">Bidirectional SQL parameters wrapper </td></tr>
+<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm" target="_self">InsertQuery</a></td><td class="desc">QSqlQuery wrapper for <em>INSERT INTO table</em> query execution </td></tr>
+<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm" target="_self">NonQueryResult</a></td><td class="desc">QSqlQuery wrapper for non-select query results reading </td></tr>
+<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_easy_qt_sql_1_1_out.htm" target="_self">Out</a></td><td class="desc">Output SQL parameters wrapper </td></tr>
+<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_easy_qt_sql_1_1_param_direction_wrapper.htm" target="_self">ParamDirectionWrapper</a></td><td class="desc">Base parameters wrapper struct </td></tr>
+<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm" target="_self">PreparedQuery</a></td><td class="desc">Class for query preparation and execution </td></tr>
+<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_query_result.htm" target="_self">QueryResult</a></td><td class="desc">QSqlQuery wrapper with handy data fetch methods </td></tr>
+<tr id="row_0_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_11_" class="arrow" onclick="toggleFolder('0_11_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_sql_factory.htm" target="_self">SqlFactory</a></td><td class="desc"></td></tr>
+<tr id="row_0_11_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_easy_qt_sql_1_1_sql_factory_1_1_d_b_setting.htm" target="_self">DBSetting</a></td><td class="desc"></td></tr>
+<tr id="row_0_11_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_sql_factory_1_1_thread_d_b_pool.htm" target="_self">ThreadDBPool</a></td><td class="desc"></td></tr>
+<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_transaction.htm" target="_self">Transaction</a></td><td class="desc">QSqlDatabase transaction wrapper </td></tr>
+<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_update_query.htm" target="_self">UpdateQuery</a></td><td class="desc">QSqlQuery wrapper for <em>UPDATE ... SET ... WHERE ...</em> query execution </td></tr>
+<tr id="row_0_14_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_easy_qt_sql_1_1_util.htm" target="_self">Util</a></td><td class="desc">Utility functions </td></tr>
+<tr id="row_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_database.htm" target="_self">Database</a></td><td class="desc">QSqlDatabase wrapper </td></tr>
+<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_d_b_exception.htm" target="_self">DBException</a></td><td class="desc">Exception class for SQL errors handling </td></tr>
+<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_delete_query.htm" target="_self">DeleteQuery</a></td><td class="desc">QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution </td></tr>
+<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_in.htm" target="_self">In</a></td><td class="desc">Input SQL parameters wrapper </td></tr>
+<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_in_out.htm" target="_self">InOut</a></td><td class="desc">Bidirectional SQL parameters wrapper </td></tr>
+<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_insert_query.htm" target="_self">InsertQuery</a></td><td class="desc">QSqlQuery wrapper for <em>INSERT INTO table</em> query execution </td></tr>
+<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_non_query_result.htm" target="_self">NonQueryResult</a></td><td class="desc">QSqlQuery wrapper for non-select query results reading </td></tr>
+<tr id="row_8_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_out.htm" target="_self">Out</a></td><td class="desc">Output SQL parameters wrapper </td></tr>
+<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_param_direction_wrapper.htm" target="_self">ParamDirectionWrapper</a></td><td class="desc">Base parameters wrapper struct </td></tr>
+<tr id="row_10_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_prepared_query.htm" target="_self">PreparedQuery</a></td><td class="desc">Class for query preparation and execution </td></tr>
+<tr id="row_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_query_result.htm" target="_self">QueryResult</a></td><td class="desc">QSqlQuery wrapper with handy data fetch methods </td></tr>
+<tr id="row_12_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_12_" class="arrow" onclick="toggleFolder('12_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sql_factory.htm" target="_self">SqlFactory</a></td><td class="desc"></td></tr>
+<tr id="row_12_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_sql_factory_1_1_d_b_setting.htm" target="_self">DBSetting</a></td><td class="desc"></td></tr>
+<tr id="row_12_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sql_factory_1_1_thread_d_b_pool.htm" target="_self">ThreadDBPool</a></td><td class="desc"></td></tr>
+<tr id="row_13_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transaction.htm" target="_self">Transaction</a></td><td class="desc">QSqlDatabase transaction wrapper </td></tr>
+<tr id="row_14_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_update_query.htm" target="_self">UpdateQuery</a></td><td class="desc">QSqlQuery wrapper for <em>UPDATE ... SET ... WHERE ...</em> query execution </td></tr>
+<tr id="row_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_util.htm" target="_self">Util</a></td><td class="desc">Utility functions </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 19 - 0
QFD/EasyQtSql/docs/annotated_dup.js

@@ -0,0 +1,19 @@
+var annotated_dup =
+[
+    [ "EasyQtSql", "namespace_easy_qt_sql.htm", "namespace_easy_qt_sql" ],
+    [ "Database", "class_database.htm", "class_database" ],
+    [ "DBException", "class_d_b_exception.htm", "class_d_b_exception" ],
+    [ "DeleteQuery", "class_delete_query.htm", "class_delete_query" ],
+    [ "In", "struct_in.htm", "struct_in" ],
+    [ "InOut", "struct_in_out.htm", "struct_in_out" ],
+    [ "InsertQuery", "class_insert_query.htm", "class_insert_query" ],
+    [ "NonQueryResult", "class_non_query_result.htm", "class_non_query_result" ],
+    [ "Out", "struct_out.htm", "struct_out" ],
+    [ "ParamDirectionWrapper", "struct_param_direction_wrapper.htm", "struct_param_direction_wrapper" ],
+    [ "PreparedQuery", "class_prepared_query.htm", "class_prepared_query" ],
+    [ "QueryResult", "class_query_result.htm", "class_query_result" ],
+    [ "SqlFactory", "class_sql_factory.htm", "class_sql_factory" ],
+    [ "Transaction", "class_transaction.htm", "class_transaction" ],
+    [ "UpdateQuery", "class_update_query.htm", "class_update_query" ],
+    [ "Util", "class_util.htm", null ]
+];

BIN
QFD/EasyQtSql/docs/bc_s.png


BIN
QFD/EasyQtSql/docs/bdwn.png


+ 115 - 0
QFD/EasyQtSql/docs/class_d_b_exception-members.htm

@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_d_b_exception.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">DBException Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_d_b_exception.htm">DBException</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_d_b_exception.htm#a6efef52d7a939622bbc934ff6b90ffe0">Database</a> class</td><td class="entry"><a class="el" href="class_d_b_exception.htm">DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_d_b_exception.htm#ae7243c345a92d89c03c2c6bfe85b5505">DeleteQuery</a> class</td><td class="entry"><a class="el" href="class_d_b_exception.htm">DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_d_b_exception.htm#a5e578aaf2c9f489c431c988b94452222">InsertQuery</a> class</td><td class="entry"><a class="el" href="class_d_b_exception.htm">DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_d_b_exception.htm#adf142ded3fb236826a5a6ba4a606e584">lastError</a></td><td class="entry"><a class="el" href="class_d_b_exception.htm">DBException</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_d_b_exception.htm#a3ec8b4b593abee155554472ae0b58f12">lastQuery</a></td><td class="entry"><a class="el" href="class_d_b_exception.htm">DBException</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_d_b_exception.htm#a86948d67f912f2e3e6d1a2674cd0814e">PreparedQuery</a> class</td><td class="entry"><a class="el" href="class_d_b_exception.htm">DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_d_b_exception.htm#a49982aa325e19f0956d42fde9132caa2">Transaction</a> class</td><td class="entry"><a class="el" href="class_d_b_exception.htm">DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_d_b_exception.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba">UpdateQuery</a> class</td><td class="entry"><a class="el" href="class_d_b_exception.htm">DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 312 - 0
QFD/EasyQtSql/docs/class_d_b_exception.htm

@@ -0,0 +1,312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: DBException Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_d_b_exception.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="#friends">Friends</a> &#124;
+<a href="class_d_b_exception-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">DBException Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Exception class for SQL errors handling.  
+ <a href="class_d_b_exception.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql___d_b_exception_8h_source.htm">EasyQtSql_DBException.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for DBException:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="class_d_b_exception.png" usemap="#DBException_map" alt=""/>
+  <map id="DBException_map" name="DBException_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:adf142ded3fb236826a5a6ba4a606e584"><td class="memItemLeft" align="right" valign="top">const QSqlError&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm#adf142ded3fb236826a5a6ba4a606e584">lastError</a></td></tr>
+<tr class="separator:adf142ded3fb236826a5a6ba4a606e584"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3ec8b4b593abee155554472ae0b58f12"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm#a3ec8b4b593abee155554472ae0b58f12">lastQuery</a></td></tr>
+<tr class="separator:a3ec8b4b593abee155554472ae0b58f12"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a6efef52d7a939622bbc934ff6b90ffe0"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm#a6efef52d7a939622bbc934ff6b90ffe0">Database</a></td></tr>
+<tr class="separator:a6efef52d7a939622bbc934ff6b90ffe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a49982aa325e19f0956d42fde9132caa2"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm#a49982aa325e19f0956d42fde9132caa2">Transaction</a></td></tr>
+<tr class="separator:a49982aa325e19f0956d42fde9132caa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a86948d67f912f2e3e6d1a2674cd0814e"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm#a86948d67f912f2e3e6d1a2674cd0814e">PreparedQuery</a></td></tr>
+<tr class="separator:a86948d67f912f2e3e6d1a2674cd0814e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e578aaf2c9f489c431c988b94452222"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm#a5e578aaf2c9f489c431c988b94452222">InsertQuery</a></td></tr>
+<tr class="separator:a5e578aaf2c9f489c431c988b94452222"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf09a5441ccc57c5e2a73a97d2dd20ba"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba">UpdateQuery</a></td></tr>
+<tr class="separator:aaf09a5441ccc57c5e2a73a97d2dd20ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7243c345a92d89c03c2c6bfe85b5505"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_b_exception.htm#ae7243c345a92d89c03c2c6bfe85b5505">DeleteQuery</a></td></tr>
+<tr class="separator:ae7243c345a92d89c03c2c6bfe85b5505"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Exception class for SQL errors handling. </p>
+</div><h2 class="groupheader">Friends And Related Function Documentation</h2>
+<a id="a6efef52d7a939622bbc934ff6b90ffe0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6efef52d7a939622bbc934ff6b90ffe0">&#9670;&nbsp;</a></span>Database</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_database.htm">Database</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ae7243c345a92d89c03c2c6bfe85b5505"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae7243c345a92d89c03c2c6bfe85b5505">&#9670;&nbsp;</a></span>DeleteQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_delete_query.htm">DeleteQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a5e578aaf2c9f489c431c988b94452222"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5e578aaf2c9f489c431c988b94452222">&#9670;&nbsp;</a></span>InsertQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_insert_query.htm">InsertQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a86948d67f912f2e3e6d1a2674cd0814e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a86948d67f912f2e3e6d1a2674cd0814e">&#9670;&nbsp;</a></span>PreparedQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_prepared_query.htm">PreparedQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a49982aa325e19f0956d42fde9132caa2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49982aa325e19f0956d42fde9132caa2">&#9670;&nbsp;</a></span>Transaction</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_transaction.htm">Transaction</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aaf09a5441ccc57c5e2a73a97d2dd20ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaf09a5441ccc57c5e2a73a97d2dd20ba">&#9670;&nbsp;</a></span>UpdateQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_update_query.htm">UpdateQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="adf142ded3fb236826a5a6ba4a606e584"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adf142ded3fb236826a5a6ba4a606e584">&#9670;&nbsp;</a></span>lastError</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QSqlError DBException::lastError</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a3ec8b4b593abee155554472ae0b58f12"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3ec8b4b593abee155554472ae0b58f12">&#9670;&nbsp;</a></span>lastQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString DBException::lastQuery</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql___d_b_exception_8h_source.htm">EasyQtSql_DBException.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="class_d_b_exception.htm">DBException</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 11 - 0
QFD/EasyQtSql/docs/class_d_b_exception.js

@@ -0,0 +1,11 @@
+var class_d_b_exception =
+[
+    [ "Database", "class_d_b_exception.htm#a6efef52d7a939622bbc934ff6b90ffe0", null ],
+    [ "DeleteQuery", "class_d_b_exception.htm#ae7243c345a92d89c03c2c6bfe85b5505", null ],
+    [ "InsertQuery", "class_d_b_exception.htm#a5e578aaf2c9f489c431c988b94452222", null ],
+    [ "PreparedQuery", "class_d_b_exception.htm#a86948d67f912f2e3e6d1a2674cd0814e", null ],
+    [ "Transaction", "class_d_b_exception.htm#a49982aa325e19f0956d42fde9132caa2", null ],
+    [ "UpdateQuery", "class_d_b_exception.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba", null ],
+    [ "lastError", "class_d_b_exception.htm#adf142ded3fb236826a5a6ba4a606e584", null ],
+    [ "lastQuery", "class_d_b_exception.htm#a3ec8b4b593abee155554472ae0b58f12", null ]
+];

BIN
QFD/EasyQtSql/docs/class_d_b_exception.png


+ 125 - 0
QFD/EasyQtSql/docs/class_database-members.htm

@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_database.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Database Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_database.htm">Database</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#a252b2bb8aeb0c0a2509b0eddf0be3c4e">Database</a>(const QSqlDatabase &amp;db=QSqlDatabase())</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#afe82d7c8e0e895c0b4f9fa08b4e3eb8e">Database</a>(Database &amp;&amp;other)</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#a44fca4a9c9241481a87d59f529e98b9e">deleteFrom</a>(const QString &amp;table) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#a7a13f4fc603fb829f123894d9abd6ea7">each</a>(const QString &amp;query, Func &amp;&amp;f) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#aae9f7e53275334c91655eeb7a2bde030">execNonQuery</a>(const QString &amp;sql) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#a05c1ac255cdba9781f8bf306801bca70">execQuery</a>(const QString &amp;sql) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#ad2283c7025501aafc33530d19beb02b4">first</a>(const QString &amp;query, Func &amp;&amp;f) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#a8388689590c1f3adeabd2972b221bcb2">insertInto</a>(const QString &amp;table) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#a7bc0ce48d3711002d4e0490c826f7b5e">lastError</a>() const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#a7357cbeca05937556f66e2fe2288bdb5">m_db</a></td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#a2a81e06933bf2ef5be2e59030a7e1e1c">operator=</a>(Database &amp;&amp;other)</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#a03e2c9113452bb52bb7018ef2366bce1">prepare</a>(const QString &amp;sql, bool forwardOnly=true) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#a0076431e130f7815ca7a3ae8ec7284ef">qSqlDatabase</a>()</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#a3b1fb50c3263775351fc981fda798207">range</a>(const QString &amp;query, int start, int count, Func &amp;&amp;f) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#a909783661db7d15e0b0adca5a96db4de">scalar</a>(const QString &amp;query) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#a39dbcd9a97f4e3c38c8c5ba48e445216">scalar</a>(const QString &amp;query) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_database.htm#a91583d42e701fb399563facc3c3c58c0">top</a>(const QString &amp;query, int topCount, Func &amp;&amp;f) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_database.htm#a2d8dad3df4134306749582216bd437e0">update</a>(const QString &amp;table) const</td><td class="entry"><a class="el" href="class_database.htm">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 872 - 0
QFD/EasyQtSql/docs/class_database.htm

@@ -0,0 +1,872 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Database Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_database.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="class_database-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">Database Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>QSqlDatabase wrapper.  
+ <a href="class_database.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql___transaction_8h_source.htm">EasyQtSql_Transaction.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for Database:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="class_database.png" usemap="#Database_map" alt=""/>
+  <map id="Database_map" name="Database_map">
+<area href="class_transaction.htm" title="QSqlDatabase transaction wrapper. " alt="Transaction" shape="rect" coords="0,56,78,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a252b2bb8aeb0c0a2509b0eddf0be3c4e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a252b2bb8aeb0c0a2509b0eddf0be3c4e">Database</a> (const QSqlDatabase &amp;db=QSqlDatabase())</td></tr>
+<tr class="separator:a252b2bb8aeb0c0a2509b0eddf0be3c4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afe82d7c8e0e895c0b4f9fa08b4e3eb8e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#afe82d7c8e0e895c0b4f9fa08b4e3eb8e">Database</a> (<a class="el" href="class_database.htm">Database</a> &amp;&amp;other)</td></tr>
+<tr class="separator:afe82d7c8e0e895c0b4f9fa08b4e3eb8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2a81e06933bf2ef5be2e59030a7e1e1c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_database.htm">Database</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a2a81e06933bf2ef5be2e59030a7e1e1c">operator=</a> (<a class="el" href="class_database.htm">Database</a> &amp;&amp;other)</td></tr>
+<tr class="separator:a2a81e06933bf2ef5be2e59030a7e1e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7bc0ce48d3711002d4e0490c826f7b5e"><td class="memItemLeft" align="right" valign="top">QSqlError&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a7bc0ce48d3711002d4e0490c826f7b5e">lastError</a> () const</td></tr>
+<tr class="memdesc:a7bc0ce48d3711002d4e0490c826f7b5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns information about the last error that occurred on the underlying database.  <a href="#a7bc0ce48d3711002d4e0490c826f7b5e">More...</a><br /></td></tr>
+<tr class="separator:a7bc0ce48d3711002d4e0490c826f7b5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aae9f7e53275334c91655eeb7a2bde030"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#aae9f7e53275334c91655eeb7a2bde030">execNonQuery</a> (const QString &amp;sql) const</td></tr>
+<tr class="memdesc:aae9f7e53275334c91655eeb7a2bde030"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes non-query SQL statement (DELETE, INSERT, UPDATE, CREATE, ALTER, etc.)  <a href="#aae9f7e53275334c91655eeb7a2bde030">More...</a><br /></td></tr>
+<tr class="separator:aae9f7e53275334c91655eeb7a2bde030"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05c1ac255cdba9781f8bf306801bca70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_query_result.htm">QueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a05c1ac255cdba9781f8bf306801bca70">execQuery</a> (const QString &amp;sql) const</td></tr>
+<tr class="memdesc:a05c1ac255cdba9781f8bf306801bca70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes SELECT query.  <a href="#a05c1ac255cdba9781f8bf306801bca70">More...</a><br /></td></tr>
+<tr class="separator:a05c1ac255cdba9781f8bf306801bca70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8388689590c1f3adeabd2972b221bcb2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_insert_query.htm">InsertQuery</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a8388689590c1f3adeabd2972b221bcb2">insertInto</a> (const QString &amp;table) const</td></tr>
+<tr class="memdesc:a8388689590c1f3adeabd2972b221bcb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates INSERT query wrapper.  <a href="#a8388689590c1f3adeabd2972b221bcb2">More...</a><br /></td></tr>
+<tr class="separator:a8388689590c1f3adeabd2972b221bcb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a44fca4a9c9241481a87d59f529e98b9e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_delete_query.htm">DeleteQuery</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a44fca4a9c9241481a87d59f529e98b9e">deleteFrom</a> (const QString &amp;table) const</td></tr>
+<tr class="memdesc:a44fca4a9c9241481a87d59f529e98b9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates DELETE query wrapper.  <a href="#a44fca4a9c9241481a87d59f529e98b9e">More...</a><br /></td></tr>
+<tr class="separator:a44fca4a9c9241481a87d59f529e98b9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2d8dad3df4134306749582216bd437e0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_update_query.htm">UpdateQuery</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a2d8dad3df4134306749582216bd437e0">update</a> (const QString &amp;table) const</td></tr>
+<tr class="memdesc:a2d8dad3df4134306749582216bd437e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates UPDATE query wrapper.  <a href="#a2d8dad3df4134306749582216bd437e0">More...</a><br /></td></tr>
+<tr class="separator:a2d8dad3df4134306749582216bd437e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a03e2c9113452bb52bb7018ef2366bce1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_prepared_query.htm">PreparedQuery</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a03e2c9113452bb52bb7018ef2366bce1">prepare</a> (const QString &amp;sql, bool forwardOnly=true) const</td></tr>
+<tr class="memdesc:a03e2c9113452bb52bb7018ef2366bce1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares SQL statement.  <a href="#a03e2c9113452bb52bb7018ef2366bce1">More...</a><br /></td></tr>
+<tr class="separator:a03e2c9113452bb52bb7018ef2366bce1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0076431e130f7815ca7a3ae8ec7284ef"><td class="memItemLeft" align="right" valign="top">QSqlDatabase &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a0076431e130f7815ca7a3ae8ec7284ef">qSqlDatabase</a> ()</td></tr>
+<tr class="memdesc:a0076431e130f7815ca7a3ae8ec7284ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the wrapped QSqlDatabase object.  <a href="#a0076431e130f7815ca7a3ae8ec7284ef">More...</a><br /></td></tr>
+<tr class="separator:a0076431e130f7815ca7a3ae8ec7284ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7a13f4fc603fb829f123894d9abd6ea7"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
+<tr class="memitem:a7a13f4fc603fb829f123894d9abd6ea7"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_database.htm#a7a13f4fc603fb829f123894d9abd6ea7">each</a> (const QString &amp;query, Func &amp;&amp;f) const</td></tr>
+<tr class="memdesc:a7a13f4fc603fb829f123894d9abd6ea7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and applies function <em>f</em> to each result row.  <a href="#a7a13f4fc603fb829f123894d9abd6ea7">More...</a><br /></td></tr>
+<tr class="separator:a7a13f4fc603fb829f123894d9abd6ea7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad2283c7025501aafc33530d19beb02b4"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
+<tr class="memitem:ad2283c7025501aafc33530d19beb02b4"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_database.htm#ad2283c7025501aafc33530d19beb02b4">first</a> (const QString &amp;query, Func &amp;&amp;f) const</td></tr>
+<tr class="memdesc:ad2283c7025501aafc33530d19beb02b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and applies function <em>f</em> to the first result row.  <a href="#ad2283c7025501aafc33530d19beb02b4">More...</a><br /></td></tr>
+<tr class="separator:ad2283c7025501aafc33530d19beb02b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b1fb50c3263775351fc981fda798207"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
+<tr class="memitem:a3b1fb50c3263775351fc981fda798207"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_database.htm#a3b1fb50c3263775351fc981fda798207">range</a> (const QString &amp;query, int start, int count, Func &amp;&amp;f) const</td></tr>
+<tr class="memdesc:a3b1fb50c3263775351fc981fda798207"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and applies function <em>f</em> to <em>count</em> result rows starting from index <em>start</em>.  <a href="#a3b1fb50c3263775351fc981fda798207">More...</a><br /></td></tr>
+<tr class="separator:a3b1fb50c3263775351fc981fda798207"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a91583d42e701fb399563facc3c3c58c0"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
+<tr class="memitem:a91583d42e701fb399563facc3c3c58c0"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_database.htm#a91583d42e701fb399563facc3c3c58c0">top</a> (const QString &amp;query, int topCount, Func &amp;&amp;f) const</td></tr>
+<tr class="memdesc:a91583d42e701fb399563facc3c3c58c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and applies function <em>f</em> to <em>topCount</em> result rows.  <a href="#a91583d42e701fb399563facc3c3c58c0">More...</a><br /></td></tr>
+<tr class="separator:a91583d42e701fb399563facc3c3c58c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a909783661db7d15e0b0adca5a96db4de"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:a909783661db7d15e0b0adca5a96db4de"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_database.htm#a909783661db7d15e0b0adca5a96db4de">scalar</a> (const QString &amp;query) const</td></tr>
+<tr class="memdesc:a909783661db7d15e0b0adca5a96db4de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and returns scalar value converted to T.  <a href="#a909783661db7d15e0b0adca5a96db4de">More...</a><br /></td></tr>
+<tr class="separator:a909783661db7d15e0b0adca5a96db4de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a39dbcd9a97f4e3c38c8c5ba48e445216"><td class="memItemLeft" align="right" valign="top">QVariant&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a39dbcd9a97f4e3c38c8c5ba48e445216">scalar</a> (const QString &amp;query) const</td></tr>
+<tr class="memdesc:a39dbcd9a97f4e3c38c8c5ba48e445216"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and returns scalar value.  <a href="#a39dbcd9a97f4e3c38c8c5ba48e445216">More...</a><br /></td></tr>
+<tr class="separator:a39dbcd9a97f4e3c38c8c5ba48e445216"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a7357cbeca05937556f66e2fe2288bdb5"><td class="memItemLeft" align="right" valign="top">QSqlDatabase&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_database.htm#a7357cbeca05937556f66e2fe2288bdb5">m_db</a></td></tr>
+<tr class="separator:a7357cbeca05937556f66e2fe2288bdb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>QSqlDatabase wrapper. </p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> test()</div><div class="line">{</div><div class="line">   QSqlDatabase db = QSqlDatabase::addDatabase(<span class="stringliteral">&quot;QSQLITE&quot;</span>);</div><div class="line">   db.setDatabaseName(<span class="stringliteral">&quot;:memory:&quot;</span>);</div><div class="line"></div><div class="line">   <span class="keywordflow">try</span></div><div class="line">   {</div><div class="line">      <a class="code" href="class_database.htm">Database</a> sdb(db);</div><div class="line"></div><div class="line">      sdb.execNonQuery(<span class="stringliteral">&quot;CREATE TABLE table (a int, b int, c int, d text)&quot;</span>);</div><div class="line">   }</div><div class="line">   <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="class_d_b_exception.htm">DBException</a> &amp;e)</div><div class="line">   {</div><div class="line">      <span class="comment">//you can handle all the errors at one point</span></div><div class="line"></div><div class="line">      qDebug() &lt;&lt; e.<a class="code" href="class_d_b_exception.htm#adf142ded3fb236826a5a6ba4a606e584">lastError</a> &lt;&lt; e.<a class="code" href="class_d_b_exception.htm#a3ec8b4b593abee155554472ae0b58f12">lastQuery</a>;</div><div class="line">   }</div><div class="line">}</div></div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a252b2bb8aeb0c0a2509b0eddf0be3c4e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a252b2bb8aeb0c0a2509b0eddf0be3c4e">&#9670;&nbsp;</a></span>Database() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">Database::Database </td>
+          <td>(</td>
+          <td class="paramtype">const QSqlDatabase &amp;&#160;</td>
+          <td class="paramname"><em>db</em> = <code>QSqlDatabase()</code></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">db</td><td>QSqlDatabase to use</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Creates an <a class="el" href="class_database.htm" title="QSqlDatabase wrapper. ">Database</a> object, tries to open <em>db</em> connection if not opened.</p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="class_d_b_exception.htm" title="Exception class for SQL errors handling. ">DBException</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="afe82d7c8e0e895c0b4f9fa08b4e3eb8e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afe82d7c8e0e895c0b4f9fa08b4e3eb8e">&#9670;&nbsp;</a></span>Database() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">Database::Database </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="class_database.htm">Database</a> &amp;&amp;&#160;</td>
+          <td class="paramname"><em>other</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a44fca4a9c9241481a87d59f529e98b9e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a44fca4a9c9241481a87d59f529e98b9e">&#9670;&nbsp;</a></span>deleteFrom()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_delete_query.htm">DeleteQuery</a> Database::deleteFrom </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates DELETE query wrapper. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>Table to delete from </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a7a13f4fc603fb829f123894d9abd6ea7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7a13f4fc603fb829f123894d9abd6ea7">&#9670;&nbsp;</a></span>each()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Func &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int Database::each </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Func &amp;&amp;&#160;</td>
+          <td class="paramname"><em>f</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and applies function <em>f</em> to each result row. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+    <tr><td class="paramname">f</td><td>Function (lambda) to apply to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>num rows handled with function <em>f</em></dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="class_database.htm">Database</a> db;</div><div class="line">db.<a class="code" href="class_database.htm#a7a13f4fc603fb829f123894d9abd6ea7">each</a>(<span class="stringliteral">&quot;SELECT * FROM table&quot;</span>, [](<span class="keyword">const</span> <a class="code" href="class_query_result.htm">QueryResult</a> &amp;res)</div><div class="line">{</div><div class="line">   qDebug() &lt;&lt; res.<a class="code" href="class_query_result.htm#a023bd84f7010368d616d7dbb1b399a06">toMap</a>();</div><div class="line">});</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="aae9f7e53275334c91655eeb7a2bde030"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aae9f7e53275334c91655eeb7a2bde030">&#9670;&nbsp;</a></span>execNonQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_non_query_result.htm">NonQueryResult</a> Database::execNonQuery </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>sql</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes non-query SQL statement (DELETE, INSERT, UPDATE, CREATE, ALTER, etc.) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL statement string </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="class_d_b_exception.htm" title="Exception class for SQL errors handling. ">DBException</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a05c1ac255cdba9781f8bf306801bca70"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a05c1ac255cdba9781f8bf306801bca70">&#9670;&nbsp;</a></span>execQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_query_result.htm">QueryResult</a> Database::execQuery </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>sql</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes SELECT query. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL statement string </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="class_d_b_exception.htm" title="Exception class for SQL errors handling. ">DBException</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ad2283c7025501aafc33530d19beb02b4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad2283c7025501aafc33530d19beb02b4">&#9670;&nbsp;</a></span>first()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Func &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int Database::first </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Func &amp;&amp;&#160;</td>
+          <td class="paramname"><em>f</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and applies function <em>f</em> to the first result row. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+    <tr><td class="paramname">f</td><td>Function (lambda) to apply to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>num rows handled with function <em>f</em></dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="class_database.htm">Database</a> db;</div><div class="line">db.<a class="code" href="class_database.htm#ad2283c7025501aafc33530d19beb02b4">first</a>(<span class="stringliteral">&quot;SELECT * FROM table&quot;</span>, [](<span class="keyword">const</span> <a class="code" href="class_query_result.htm">QueryResult</a> &amp;res)</div><div class="line">{</div><div class="line">   qDebug() &lt;&lt; res.<a class="code" href="class_query_result.htm#a023bd84f7010368d616d7dbb1b399a06">toMap</a>();</div><div class="line">});</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="a8388689590c1f3adeabd2972b221bcb2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8388689590c1f3adeabd2972b221bcb2">&#9670;&nbsp;</a></span>insertInto()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_insert_query.htm">InsertQuery</a> Database::insertInto </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates INSERT query wrapper. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>Table to insert into with list of columns </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a7bc0ce48d3711002d4e0490c826f7b5e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7bc0ce48d3711002d4e0490c826f7b5e">&#9670;&nbsp;</a></span>lastError()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QSqlError Database::lastError </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns information about the last error that occurred on the underlying database. </p>
+
+</div>
+</div>
+<a id="a2a81e06933bf2ef5be2e59030a7e1e1c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2a81e06933bf2ef5be2e59030a7e1e1c">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_database.htm">Database</a>&amp; Database::operator= </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="class_database.htm">Database</a> &amp;&amp;&#160;</td>
+          <td class="paramname"><em>other</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a03e2c9113452bb52bb7018ef2366bce1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a03e2c9113452bb52bb7018ef2366bce1">&#9670;&nbsp;</a></span>prepare()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_prepared_query.htm">PreparedQuery</a> Database::prepare </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>sql</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>forwardOnly</em> = <code>true</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Prepares SQL statement. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">sql</td><td>SQL statement string </td></tr>
+    <tr><td class="paramname">forwardOnly</td><td>Configure underlying QSqlQuery as forwardOnly </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a0076431e130f7815ca7a3ae8ec7284ef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0076431e130f7815ca7a3ae8ec7284ef">&#9670;&nbsp;</a></span>qSqlDatabase()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QSqlDatabase&amp; Database::qSqlDatabase </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns a reference to the wrapped QSqlDatabase object. </p>
+
+</div>
+</div>
+<a id="a3b1fb50c3263775351fc981fda798207"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b1fb50c3263775351fc981fda798207">&#9670;&nbsp;</a></span>range()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Func &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int Database::range </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>start</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>count</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Func &amp;&amp;&#160;</td>
+          <td class="paramname"><em>f</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and applies function <em>f</em> to <em>count</em> result rows starting from index <em>start</em>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+    <tr><td class="paramname">start</td><td>Start index </td></tr>
+    <tr><td class="paramname">count</td><td>Row count to handle </td></tr>
+    <tr><td class="paramname">f</td><td>Function (lambda) to apply to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>num rows handled with function <em>f</em></dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="class_database.htm">Database</a> db;</div><div class="line">db.<a class="code" href="class_database.htm#a3b1fb50c3263775351fc981fda798207">range</a>(<span class="stringliteral">&quot;SELECT * FROM table&quot;</span>, 3, 10, [](<span class="keyword">const</span> <a class="code" href="class_query_result.htm">QueryResult</a> &amp;res)</div><div class="line">{</div><div class="line">   qDebug() &lt;&lt; res.<a class="code" href="class_query_result.htm#a023bd84f7010368d616d7dbb1b399a06">toMap</a>();</div><div class="line">});</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="a909783661db7d15e0b0adca5a96db4de"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a909783661db7d15e0b0adca5a96db4de">&#9670;&nbsp;</a></span>scalar() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">T Database::scalar </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and returns scalar value converted to T. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_query_result.htm#a5e3b49cb821efecac406606d9e3adb13" title="Returns scalar value converted to type T (the value of the first column of the current row) ...">QueryResult::scalar</a> </dd></dl>
+
+</div>
+</div>
+<a id="a39dbcd9a97f4e3c38c8c5ba48e445216"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a39dbcd9a97f4e3c38c8c5ba48e445216">&#9670;&nbsp;</a></span>scalar() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QVariant Database::scalar </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and returns scalar value. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_query_result.htm#a5e3b49cb821efecac406606d9e3adb13" title="Returns scalar value converted to type T (the value of the first column of the current row) ...">QueryResult::scalar</a> </dd></dl>
+
+</div>
+</div>
+<a id="a91583d42e701fb399563facc3c3c58c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a91583d42e701fb399563facc3c3c58c0">&#9670;&nbsp;</a></span>top()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Func &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int Database::top </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>topCount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Func &amp;&amp;&#160;</td>
+          <td class="paramname"><em>f</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and applies function <em>f</em> to <em>topCount</em> result rows. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+    <tr><td class="paramname">topCount</td><td>Row count to handle </td></tr>
+    <tr><td class="paramname">f</td><td>Function (lambda) to apply to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>num rows handled with function <em>f</em></dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="class_database.htm">Database</a> db;</div><div class="line">db.<a class="code" href="class_database.htm#a91583d42e701fb399563facc3c3c58c0">top</a>(<span class="stringliteral">&quot;SELECT * FROM table&quot;</span>, 10, [](<span class="keyword">const</span> <a class="code" href="class_query_result.htm">QueryResult</a> &amp;res)</div><div class="line">{</div><div class="line">   qDebug() &lt;&lt; res.<a class="code" href="class_query_result.htm#a023bd84f7010368d616d7dbb1b399a06">toMap</a>();</div><div class="line">});</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="a2d8dad3df4134306749582216bd437e0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2d8dad3df4134306749582216bd437e0">&#9670;&nbsp;</a></span>update()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_update_query.htm">UpdateQuery</a> Database::update </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates UPDATE query wrapper. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>Table to update </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a7357cbeca05937556f66e2fe2288bdb5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7357cbeca05937556f66e2fe2288bdb5">&#9670;&nbsp;</a></span>m_db</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QSqlDatabase Database::m_db</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql___transaction_8h_source.htm">EasyQtSql_Transaction.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="class_database.htm">Database</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 21 - 0
QFD/EasyQtSql/docs/class_database.js

@@ -0,0 +1,21 @@
+var class_database =
+[
+    [ "Database", "class_database.htm#a252b2bb8aeb0c0a2509b0eddf0be3c4e", null ],
+    [ "Database", "class_database.htm#afe82d7c8e0e895c0b4f9fa08b4e3eb8e", null ],
+    [ "deleteFrom", "class_database.htm#a44fca4a9c9241481a87d59f529e98b9e", null ],
+    [ "each", "class_database.htm#a7a13f4fc603fb829f123894d9abd6ea7", null ],
+    [ "execNonQuery", "class_database.htm#aae9f7e53275334c91655eeb7a2bde030", null ],
+    [ "execQuery", "class_database.htm#a05c1ac255cdba9781f8bf306801bca70", null ],
+    [ "first", "class_database.htm#ad2283c7025501aafc33530d19beb02b4", null ],
+    [ "insertInto", "class_database.htm#a8388689590c1f3adeabd2972b221bcb2", null ],
+    [ "lastError", "class_database.htm#a7bc0ce48d3711002d4e0490c826f7b5e", null ],
+    [ "operator=", "class_database.htm#a2a81e06933bf2ef5be2e59030a7e1e1c", null ],
+    [ "prepare", "class_database.htm#a03e2c9113452bb52bb7018ef2366bce1", null ],
+    [ "qSqlDatabase", "class_database.htm#a0076431e130f7815ca7a3ae8ec7284ef", null ],
+    [ "range", "class_database.htm#a3b1fb50c3263775351fc981fda798207", null ],
+    [ "scalar", "class_database.htm#a909783661db7d15e0b0adca5a96db4de", null ],
+    [ "scalar", "class_database.htm#a39dbcd9a97f4e3c38c8c5ba48e445216", null ],
+    [ "top", "class_database.htm#a91583d42e701fb399563facc3c3c58c0", null ],
+    [ "update", "class_database.htm#a2d8dad3df4134306749582216bd437e0", null ],
+    [ "m_db", "class_database.htm#a7357cbeca05937556f66e2fe2288bdb5", null ]
+];

BIN
QFD/EasyQtSql/docs/class_database.png


+ 112 - 0
QFD/EasyQtSql/docs/class_delete_query-members.htm

@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_delete_query.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">DeleteQuery Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_delete_query.htm">DeleteQuery</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_delete_query.htm#a1529061aba7badf90f074b8915d538f7">DeleteQuery</a>(const QString &amp;table, const QSqlDatabase &amp;db)</td><td class="entry"><a class="el" href="class_delete_query.htm">DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_delete_query.htm#ae0189c8fb1b4e206bf005a4a423be818">exec</a>()</td><td class="entry"><a class="el" href="class_delete_query.htm">DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_delete_query.htm#a3af8292bc0da24e101cf08b863af53fe">where</a>(const QString &amp;expr)</td><td class="entry"><a class="el" href="class_delete_query.htm">DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_delete_query.htm#a34878a99e8af27ab70c54cbccd7bbae5">where</a>(const QString &amp;expr, const QVariant &amp;last)</td><td class="entry"><a class="el" href="class_delete_query.htm">DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_delete_query.htm#a1fd4ba6405a108634d27c0e1a0ba6cda">where</a>(const QString &amp;expr, const QVariant &amp;first, const Rest &amp;... rest)</td><td class="entry"><a class="el" href="class_delete_query.htm">DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 311 - 0
QFD/EasyQtSql/docs/class_delete_query.htm

@@ -0,0 +1,311 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: DeleteQuery Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_delete_query.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="class_delete_query-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">DeleteQuery Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution.  
+ <a href="class_delete_query.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql___delete_query_8h_source.htm">EasyQtSql_DeleteQuery.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a1529061aba7badf90f074b8915d538f7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_delete_query.htm#a1529061aba7badf90f074b8915d538f7">DeleteQuery</a> (const QString &amp;table, const QSqlDatabase &amp;db)</td></tr>
+<tr class="separator:a1529061aba7badf90f074b8915d538f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3af8292bc0da24e101cf08b863af53fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_delete_query.htm#a3af8292bc0da24e101cf08b863af53fe">where</a> (const QString &amp;expr)</td></tr>
+<tr class="memdesc:a3af8292bc0da24e101cf08b863af53fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes conditional <em>DELETE FROM table WHERE expr</em> query.  <a href="#a3af8292bc0da24e101cf08b863af53fe">More...</a><br /></td></tr>
+<tr class="separator:a3af8292bc0da24e101cf08b863af53fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a34878a99e8af27ab70c54cbccd7bbae5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_delete_query.htm#a34878a99e8af27ab70c54cbccd7bbae5">where</a> (const QString &amp;expr, const QVariant &amp;last)</td></tr>
+<tr class="memdesc:a34878a99e8af27ab70c54cbccd7bbae5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes conditional <em>DELETE FROM table WHERE expr</em> query with parameter binding.  <a href="#a34878a99e8af27ab70c54cbccd7bbae5">More...</a><br /></td></tr>
+<tr class="separator:a34878a99e8af27ab70c54cbccd7bbae5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fd4ba6405a108634d27c0e1a0ba6cda"><td class="memTemplParams" colspan="2">template&lt;typename... Rest&gt; </td></tr>
+<tr class="memitem:a1fd4ba6405a108634d27c0e1a0ba6cda"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_delete_query.htm#a1fd4ba6405a108634d27c0e1a0ba6cda">where</a> (const QString &amp;expr, const QVariant &amp;first, const Rest &amp;... rest)</td></tr>
+<tr class="separator:a1fd4ba6405a108634d27c0e1a0ba6cda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae0189c8fb1b4e206bf005a4a423be818"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_delete_query.htm#ae0189c8fb1b4e206bf005a4a423be818">exec</a> ()</td></tr>
+<tr class="memdesc:ae0189c8fb1b4e206bf005a4a423be818"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes unconditional <em>DELETE FROM table</em> query.  <a href="#ae0189c8fb1b4e206bf005a4a423be818">More...</a><br /></td></tr>
+<tr class="separator:ae0189c8fb1b4e206bf005a4a423be818"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a1529061aba7badf90f074b8915d538f7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1529061aba7badf90f074b8915d538f7">&#9670;&nbsp;</a></span>DeleteQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">DeleteQuery::DeleteQuery </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QSqlDatabase &amp;&#160;</td>
+          <td class="paramname"><em>db</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="ae0189c8fb1b4e206bf005a4a423be818"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae0189c8fb1b4e206bf005a4a423be818">&#9670;&nbsp;</a></span>exec()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_non_query_result.htm">NonQueryResult</a> DeleteQuery::exec </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes unconditional <em>DELETE FROM table</em> query. </p>
+<div class="fragment"><div class="line"><span class="comment">//DELETE FROM table</span></div><div class="line">t.deleteFrom(<span class="stringliteral">&quot;table&quot;</span>).exec();</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="a3af8292bc0da24e101cf08b863af53fe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3af8292bc0da24e101cf08b863af53fe">&#9670;&nbsp;</a></span>where() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_non_query_result.htm">NonQueryResult</a> DeleteQuery::where </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>expr</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes conditional <em>DELETE FROM table WHERE expr</em> query. </p>
+<div class="fragment"><div class="line"><span class="comment">//DELETE FROM table WHERE 1=0</span></div><div class="line">t.deleteFrom(<span class="stringliteral">&quot;table&quot;</span>).where(<span class="stringliteral">&quot;1=0&quot;</span>);</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="a34878a99e8af27ab70c54cbccd7bbae5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a34878a99e8af27ab70c54cbccd7bbae5">&#9670;&nbsp;</a></span>where() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_non_query_result.htm">NonQueryResult</a> DeleteQuery::where </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>expr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QVariant &amp;&#160;</td>
+          <td class="paramname"><em>last</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes conditional <em>DELETE FROM table WHERE expr</em> query with parameter binding. </p>
+<p>The method supports variable count of QVariant parameters. Parameters are bound with <em>QSqlQuery::addBindValue</em>. </p><div class="fragment"><div class="line"><span class="comment">//DELETE FROM table WHERE a=1 AND b=2</span></div><div class="line">t.deleteFrom(<span class="stringliteral">&quot;table&quot;</span>).where(<span class="stringliteral">&quot;a=? AND b=?&quot;</span>, 1, 2);</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="a1fd4ba6405a108634d27c0e1a0ba6cda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fd4ba6405a108634d27c0e1a0ba6cda">&#9670;&nbsp;</a></span>where() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename... Rest&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_non_query_result.htm">NonQueryResult</a> DeleteQuery::where </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>expr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QVariant &amp;&#160;</td>
+          <td class="paramname"><em>first</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Rest &amp;...&#160;</td>
+          <td class="paramname"><em>rest</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql___delete_query_8h_source.htm">EasyQtSql_DeleteQuery.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="class_delete_query.htm">DeleteQuery</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 8 - 0
QFD/EasyQtSql/docs/class_delete_query.js

@@ -0,0 +1,8 @@
+var class_delete_query =
+[
+    [ "DeleteQuery", "class_delete_query.htm#a1529061aba7badf90f074b8915d538f7", null ],
+    [ "exec", "class_delete_query.htm#ae0189c8fb1b4e206bf005a4a423be818", null ],
+    [ "where", "class_delete_query.htm#a3af8292bc0da24e101cf08b863af53fe", null ],
+    [ "where", "class_delete_query.htm#a34878a99e8af27ab70c54cbccd7bbae5", null ],
+    [ "where", "class_delete_query.htm#a1fd4ba6405a108634d27c0e1a0ba6cda", null ]
+];

+ 115 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_d_b_exception-members.htm

@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_d_b_exception.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">EasyQtSql::DBException Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#a6efef52d7a939622bbc934ff6b90ffe0">Database</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#ae7243c345a92d89c03c2c6bfe85b5505">DeleteQuery</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#a5e578aaf2c9f489c431c988b94452222">InsertQuery</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#acae3cc68633e4be58440ec745d51cedb">lastError</a></td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#afc48e67740faefa6825adf04908d5924">lastQuery</a></td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#a86948d67f912f2e3e6d1a2674cd0814e">PreparedQuery</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#a49982aa325e19f0956d42fde9132caa2">Transaction</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba">UpdateQuery</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">EasyQtSql::DBException</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 312 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_d_b_exception.htm

@@ -0,0 +1,312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql::DBException Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_d_b_exception.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="#friends">Friends</a> &#124;
+<a href="class_easy_qt_sql_1_1_d_b_exception-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql::DBException Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Exception class for SQL errors handling.  
+ <a href="class_easy_qt_sql_1_1_d_b_exception.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for EasyQtSql::DBException:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="class_easy_qt_sql_1_1_d_b_exception.png" usemap="#EasyQtSql::DBException_map" alt=""/>
+  <map id="EasyQtSql::DBException_map" name="EasyQtSql::DBException_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:acae3cc68633e4be58440ec745d51cedb"><td class="memItemLeft" align="right" valign="top">const QSqlError&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#acae3cc68633e4be58440ec745d51cedb">lastError</a></td></tr>
+<tr class="separator:acae3cc68633e4be58440ec745d51cedb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afc48e67740faefa6825adf04908d5924"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#afc48e67740faefa6825adf04908d5924">lastQuery</a></td></tr>
+<tr class="separator:afc48e67740faefa6825adf04908d5924"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a6efef52d7a939622bbc934ff6b90ffe0"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#a6efef52d7a939622bbc934ff6b90ffe0">Database</a></td></tr>
+<tr class="separator:a6efef52d7a939622bbc934ff6b90ffe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a49982aa325e19f0956d42fde9132caa2"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#a49982aa325e19f0956d42fde9132caa2">Transaction</a></td></tr>
+<tr class="separator:a49982aa325e19f0956d42fde9132caa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a86948d67f912f2e3e6d1a2674cd0814e"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#a86948d67f912f2e3e6d1a2674cd0814e">PreparedQuery</a></td></tr>
+<tr class="separator:a86948d67f912f2e3e6d1a2674cd0814e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e578aaf2c9f489c431c988b94452222"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#a5e578aaf2c9f489c431c988b94452222">InsertQuery</a></td></tr>
+<tr class="separator:a5e578aaf2c9f489c431c988b94452222"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf09a5441ccc57c5e2a73a97d2dd20ba"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba">UpdateQuery</a></td></tr>
+<tr class="separator:aaf09a5441ccc57c5e2a73a97d2dd20ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7243c345a92d89c03c2c6bfe85b5505"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm#ae7243c345a92d89c03c2c6bfe85b5505">DeleteQuery</a></td></tr>
+<tr class="separator:ae7243c345a92d89c03c2c6bfe85b5505"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Exception class for SQL errors handling. </p>
+</div><h2 class="groupheader">Friends And Related Function Documentation</h2>
+<a id="a6efef52d7a939622bbc934ff6b90ffe0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6efef52d7a939622bbc934ff6b90ffe0">&#9670;&nbsp;</a></span>Database</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ae7243c345a92d89c03c2c6bfe85b5505"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae7243c345a92d89c03c2c6bfe85b5505">&#9670;&nbsp;</a></span>DeleteQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">DeleteQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a5e578aaf2c9f489c431c988b94452222"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5e578aaf2c9f489c431c988b94452222">&#9670;&nbsp;</a></span>InsertQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a86948d67f912f2e3e6d1a2674cd0814e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a86948d67f912f2e3e6d1a2674cd0814e">&#9670;&nbsp;</a></span>PreparedQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">PreparedQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a49982aa325e19f0956d42fde9132caa2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49982aa325e19f0956d42fde9132caa2">&#9670;&nbsp;</a></span>Transaction</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_transaction.htm">Transaction</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aaf09a5441ccc57c5e2a73a97d2dd20ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaf09a5441ccc57c5e2a73a97d2dd20ba">&#9670;&nbsp;</a></span>UpdateQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_update_query.htm">UpdateQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="acae3cc68633e4be58440ec745d51cedb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acae3cc68633e4be58440ec745d51cedb">&#9670;&nbsp;</a></span>lastError</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QSqlError EasyQtSql::DBException::lastError</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="afc48e67740faefa6825adf04908d5924"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afc48e67740faefa6825adf04908d5924">&#9670;&nbsp;</a></span>lastQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString EasyQtSql::DBException::lastQuery</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="namespace_easy_qt_sql.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm">DBException</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 11 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_d_b_exception.js

@@ -0,0 +1,11 @@
+var class_easy_qt_sql_1_1_d_b_exception =
+[
+    [ "Database", "class_easy_qt_sql_1_1_d_b_exception.htm#a6efef52d7a939622bbc934ff6b90ffe0", null ],
+    [ "DeleteQuery", "class_easy_qt_sql_1_1_d_b_exception.htm#ae7243c345a92d89c03c2c6bfe85b5505", null ],
+    [ "InsertQuery", "class_easy_qt_sql_1_1_d_b_exception.htm#a5e578aaf2c9f489c431c988b94452222", null ],
+    [ "PreparedQuery", "class_easy_qt_sql_1_1_d_b_exception.htm#a86948d67f912f2e3e6d1a2674cd0814e", null ],
+    [ "Transaction", "class_easy_qt_sql_1_1_d_b_exception.htm#a49982aa325e19f0956d42fde9132caa2", null ],
+    [ "UpdateQuery", "class_easy_qt_sql_1_1_d_b_exception.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba", null ],
+    [ "lastError", "class_easy_qt_sql_1_1_d_b_exception.htm#acae3cc68633e4be58440ec745d51cedb", null ],
+    [ "lastQuery", "class_easy_qt_sql_1_1_d_b_exception.htm#afc48e67740faefa6825adf04908d5924", null ]
+];

BIN
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_d_b_exception.png


+ 125 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_database-members.htm

@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_database.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">EasyQtSql::Database Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a456e50298d0dd2bb89ddbadee7bf2da5">Database</a>(const QSqlDatabase &amp;db=QSqlDatabase())</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a4ba16ffeda09410df95720f2f7e9d872">Database</a>(Database &amp;&amp;other)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a0da534e09d06f26d517c2acd41446a80">deleteFrom</a>(const QString &amp;table) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#aa14b9309738dd427f7060a88ae193beb">each</a>(const QString &amp;query, Func &amp;&amp;f) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#abd563e304bb79860237c218b8bc10acd">execNonQuery</a>(const QString &amp;sql) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a5ae51f8e281cc1b41d7d48b7ca659b33">execQuery</a>(const QString &amp;sql) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a7165d67d4fdfa07b3d9700d5ed5c6a63">first</a>(const QString &amp;query, Func &amp;&amp;f) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a8fc62bc8b97ae861420068e2d1dcff8a">insertInto</a>(const QString &amp;table) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a55fa6c1582cdd3dd6981f53e61dce6b4">lastError</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#af1da52105a07c38f77aad58df9792181">m_db</a></td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a00ada326c3f4b3b01be26c552ad665dc">operator=</a>(Database &amp;&amp;other)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#af87d995c4cf5eaf4870befe2f973487d">prepare</a>(const QString &amp;sql, bool forwardOnly=true) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#ad4a237ca6acca4068b005d843e1551bb">qSqlDatabase</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a1832537434940c8334fe0ca012bee8dd">range</a>(const QString &amp;query, int start, int count, Func &amp;&amp;f) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#abada64f2593dd9524199f570d9387296">scalar</a>(const QString &amp;query) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#aa06ecb239cde85058a7ed828e06906b7">scalar</a>(const QString &amp;query) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a2f66f508f3cc25d0512d841f938adfb4">top</a>(const QString &amp;query, int topCount, Func &amp;&amp;f) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm#ad99ec8b68e916201dce33cda5018be67">update</a>(const QString &amp;table) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_database.htm">EasyQtSql::Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 872 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_database.htm

@@ -0,0 +1,872 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql::Database Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_database.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="class_easy_qt_sql_1_1_database-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql::Database Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>QSqlDatabase wrapper.  
+ <a href="class_easy_qt_sql_1_1_database.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for EasyQtSql::Database:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="class_easy_qt_sql_1_1_database.png" usemap="#EasyQtSql::Database_map" alt=""/>
+  <map id="EasyQtSql::Database_map" name="EasyQtSql::Database_map">
+<area href="class_easy_qt_sql_1_1_transaction.htm" title="QSqlDatabase transaction wrapper. " alt="EasyQtSql::Transaction" shape="rect" coords="0,56,142,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a456e50298d0dd2bb89ddbadee7bf2da5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a456e50298d0dd2bb89ddbadee7bf2da5">Database</a> (const QSqlDatabase &amp;db=QSqlDatabase())</td></tr>
+<tr class="separator:a456e50298d0dd2bb89ddbadee7bf2da5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ba16ffeda09410df95720f2f7e9d872"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a4ba16ffeda09410df95720f2f7e9d872">Database</a> (<a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a> &amp;&amp;other)</td></tr>
+<tr class="separator:a4ba16ffeda09410df95720f2f7e9d872"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a00ada326c3f4b3b01be26c552ad665dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a00ada326c3f4b3b01be26c552ad665dc">operator=</a> (<a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a> &amp;&amp;other)</td></tr>
+<tr class="separator:a00ada326c3f4b3b01be26c552ad665dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a55fa6c1582cdd3dd6981f53e61dce6b4"><td class="memItemLeft" align="right" valign="top">QSqlError&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a55fa6c1582cdd3dd6981f53e61dce6b4">lastError</a> () const</td></tr>
+<tr class="memdesc:a55fa6c1582cdd3dd6981f53e61dce6b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns information about the last error that occurred on the underlying database.  <a href="#a55fa6c1582cdd3dd6981f53e61dce6b4">More...</a><br /></td></tr>
+<tr class="separator:a55fa6c1582cdd3dd6981f53e61dce6b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abd563e304bb79860237c218b8bc10acd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#abd563e304bb79860237c218b8bc10acd">execNonQuery</a> (const QString &amp;sql) const</td></tr>
+<tr class="memdesc:abd563e304bb79860237c218b8bc10acd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes non-query SQL statement (DELETE, INSERT, UPDATE, CREATE, ALTER, etc.)  <a href="#abd563e304bb79860237c218b8bc10acd">More...</a><br /></td></tr>
+<tr class="separator:abd563e304bb79860237c218b8bc10acd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5ae51f8e281cc1b41d7d48b7ca659b33"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a5ae51f8e281cc1b41d7d48b7ca659b33">execQuery</a> (const QString &amp;sql) const</td></tr>
+<tr class="memdesc:a5ae51f8e281cc1b41d7d48b7ca659b33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes SELECT query.  <a href="#a5ae51f8e281cc1b41d7d48b7ca659b33">More...</a><br /></td></tr>
+<tr class="separator:a5ae51f8e281cc1b41d7d48b7ca659b33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8fc62bc8b97ae861420068e2d1dcff8a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a8fc62bc8b97ae861420068e2d1dcff8a">insertInto</a> (const QString &amp;table) const</td></tr>
+<tr class="memdesc:a8fc62bc8b97ae861420068e2d1dcff8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates INSERT query wrapper.  <a href="#a8fc62bc8b97ae861420068e2d1dcff8a">More...</a><br /></td></tr>
+<tr class="separator:a8fc62bc8b97ae861420068e2d1dcff8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0da534e09d06f26d517c2acd41446a80"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">DeleteQuery</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a0da534e09d06f26d517c2acd41446a80">deleteFrom</a> (const QString &amp;table) const</td></tr>
+<tr class="memdesc:a0da534e09d06f26d517c2acd41446a80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates DELETE query wrapper.  <a href="#a0da534e09d06f26d517c2acd41446a80">More...</a><br /></td></tr>
+<tr class="separator:a0da534e09d06f26d517c2acd41446a80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad99ec8b68e916201dce33cda5018be67"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_update_query.htm">UpdateQuery</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#ad99ec8b68e916201dce33cda5018be67">update</a> (const QString &amp;table) const</td></tr>
+<tr class="memdesc:ad99ec8b68e916201dce33cda5018be67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates UPDATE query wrapper.  <a href="#ad99ec8b68e916201dce33cda5018be67">More...</a><br /></td></tr>
+<tr class="separator:ad99ec8b68e916201dce33cda5018be67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af87d995c4cf5eaf4870befe2f973487d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">PreparedQuery</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#af87d995c4cf5eaf4870befe2f973487d">prepare</a> (const QString &amp;sql, bool forwardOnly=true) const</td></tr>
+<tr class="memdesc:af87d995c4cf5eaf4870befe2f973487d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares SQL statement.  <a href="#af87d995c4cf5eaf4870befe2f973487d">More...</a><br /></td></tr>
+<tr class="separator:af87d995c4cf5eaf4870befe2f973487d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4a237ca6acca4068b005d843e1551bb"><td class="memItemLeft" align="right" valign="top">QSqlDatabase &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#ad4a237ca6acca4068b005d843e1551bb">qSqlDatabase</a> ()</td></tr>
+<tr class="memdesc:ad4a237ca6acca4068b005d843e1551bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the wrapped QSqlDatabase object.  <a href="#ad4a237ca6acca4068b005d843e1551bb">More...</a><br /></td></tr>
+<tr class="separator:ad4a237ca6acca4068b005d843e1551bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa14b9309738dd427f7060a88ae193beb"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
+<tr class="memitem:aa14b9309738dd427f7060a88ae193beb"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#aa14b9309738dd427f7060a88ae193beb">each</a> (const QString &amp;query, Func &amp;&amp;f) const</td></tr>
+<tr class="memdesc:aa14b9309738dd427f7060a88ae193beb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and applies function <em>f</em> to each result row.  <a href="#aa14b9309738dd427f7060a88ae193beb">More...</a><br /></td></tr>
+<tr class="separator:aa14b9309738dd427f7060a88ae193beb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7165d67d4fdfa07b3d9700d5ed5c6a63"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
+<tr class="memitem:a7165d67d4fdfa07b3d9700d5ed5c6a63"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a7165d67d4fdfa07b3d9700d5ed5c6a63">first</a> (const QString &amp;query, Func &amp;&amp;f) const</td></tr>
+<tr class="memdesc:a7165d67d4fdfa07b3d9700d5ed5c6a63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and applies function <em>f</em> to the first result row.  <a href="#a7165d67d4fdfa07b3d9700d5ed5c6a63">More...</a><br /></td></tr>
+<tr class="separator:a7165d67d4fdfa07b3d9700d5ed5c6a63"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1832537434940c8334fe0ca012bee8dd"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
+<tr class="memitem:a1832537434940c8334fe0ca012bee8dd"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a1832537434940c8334fe0ca012bee8dd">range</a> (const QString &amp;query, int start, int count, Func &amp;&amp;f) const</td></tr>
+<tr class="memdesc:a1832537434940c8334fe0ca012bee8dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and applies function <em>f</em> to <em>count</em> result rows starting from index <em>start</em>.  <a href="#a1832537434940c8334fe0ca012bee8dd">More...</a><br /></td></tr>
+<tr class="separator:a1832537434940c8334fe0ca012bee8dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2f66f508f3cc25d0512d841f938adfb4"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
+<tr class="memitem:a2f66f508f3cc25d0512d841f938adfb4"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#a2f66f508f3cc25d0512d841f938adfb4">top</a> (const QString &amp;query, int topCount, Func &amp;&amp;f) const</td></tr>
+<tr class="memdesc:a2f66f508f3cc25d0512d841f938adfb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and applies function <em>f</em> to <em>topCount</em> result rows.  <a href="#a2f66f508f3cc25d0512d841f938adfb4">More...</a><br /></td></tr>
+<tr class="separator:a2f66f508f3cc25d0512d841f938adfb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abada64f2593dd9524199f570d9387296"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:abada64f2593dd9524199f570d9387296"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#abada64f2593dd9524199f570d9387296">scalar</a> (const QString &amp;query) const</td></tr>
+<tr class="memdesc:abada64f2593dd9524199f570d9387296"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and returns scalar value converted to T.  <a href="#abada64f2593dd9524199f570d9387296">More...</a><br /></td></tr>
+<tr class="separator:abada64f2593dd9524199f570d9387296"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa06ecb239cde85058a7ed828e06906b7"><td class="memItemLeft" align="right" valign="top">QVariant&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#aa06ecb239cde85058a7ed828e06906b7">scalar</a> (const QString &amp;query) const</td></tr>
+<tr class="memdesc:aa06ecb239cde85058a7ed828e06906b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <em>query</em> and returns scalar value.  <a href="#aa06ecb239cde85058a7ed828e06906b7">More...</a><br /></td></tr>
+<tr class="separator:aa06ecb239cde85058a7ed828e06906b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:af1da52105a07c38f77aad58df9792181"><td class="memItemLeft" align="right" valign="top">QSqlDatabase&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_database.htm#af1da52105a07c38f77aad58df9792181">m_db</a></td></tr>
+<tr class="separator:af1da52105a07c38f77aad58df9792181"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>QSqlDatabase wrapper. </p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> test()</div><div class="line">{</div><div class="line">   QSqlDatabase db = QSqlDatabase::addDatabase(<span class="stringliteral">&quot;QSQLITE&quot;</span>);</div><div class="line">   db.setDatabaseName(<span class="stringliteral">&quot;:memory:&quot;</span>);</div><div class="line"></div><div class="line">   <span class="keywordflow">try</span></div><div class="line">   {</div><div class="line">      <a class="code" href="class_database.htm">Database</a> sdb(db);</div><div class="line"></div><div class="line">      sdb.execNonQuery(<span class="stringliteral">&quot;CREATE TABLE table (a int, b int, c int, d text)&quot;</span>);</div><div class="line">   }</div><div class="line">   <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="class_d_b_exception.htm">DBException</a> &amp;e)</div><div class="line">   {</div><div class="line">      <span class="comment">//you can handle all the errors at one point</span></div><div class="line"></div><div class="line">      qDebug() &lt;&lt; e.<a class="code" href="class_d_b_exception.htm#adf142ded3fb236826a5a6ba4a606e584">lastError</a> &lt;&lt; e.<a class="code" href="class_d_b_exception.htm#a3ec8b4b593abee155554472ae0b58f12">lastQuery</a>;</div><div class="line">   }</div><div class="line">}</div></div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a456e50298d0dd2bb89ddbadee7bf2da5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a456e50298d0dd2bb89ddbadee7bf2da5">&#9670;&nbsp;</a></span>Database() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">EasyQtSql::Database::Database </td>
+          <td>(</td>
+          <td class="paramtype">const QSqlDatabase &amp;&#160;</td>
+          <td class="paramname"><em>db</em> = <code>QSqlDatabase()</code></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">db</td><td>QSqlDatabase to use</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Creates an <a class="el" href="class_easy_qt_sql_1_1_database.htm" title="QSqlDatabase wrapper. ">Database</a> object, tries to open <em>db</em> connection if not opened.</p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm" title="Exception class for SQL errors handling. ">DBException</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a4ba16ffeda09410df95720f2f7e9d872"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4ba16ffeda09410df95720f2f7e9d872">&#9670;&nbsp;</a></span>Database() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">EasyQtSql::Database::Database </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a> &amp;&amp;&#160;</td>
+          <td class="paramname"><em>other</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a0da534e09d06f26d517c2acd41446a80"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0da534e09d06f26d517c2acd41446a80">&#9670;&nbsp;</a></span>deleteFrom()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">DeleteQuery</a> EasyQtSql::Database::deleteFrom </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates DELETE query wrapper. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>Table to delete from </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="aa14b9309738dd427f7060a88ae193beb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa14b9309738dd427f7060a88ae193beb">&#9670;&nbsp;</a></span>each()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Func &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int EasyQtSql::Database::each </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Func &amp;&amp;&#160;</td>
+          <td class="paramname"><em>f</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and applies function <em>f</em> to each result row. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+    <tr><td class="paramname">f</td><td>Function (lambda) to apply to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>num rows handled with function <em>f</em></dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="class_database.htm">Database</a> db;</div><div class="line">db.<a class="code" href="class_database.htm#a7a13f4fc603fb829f123894d9abd6ea7">each</a>(<span class="stringliteral">&quot;SELECT * FROM table&quot;</span>, [](<span class="keyword">const</span> <a class="code" href="class_query_result.htm">QueryResult</a> &amp;res)</div><div class="line">{</div><div class="line">   qDebug() &lt;&lt; res.<a class="code" href="class_query_result.htm#a023bd84f7010368d616d7dbb1b399a06">toMap</a>();</div><div class="line">});</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="abd563e304bb79860237c218b8bc10acd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abd563e304bb79860237c218b8bc10acd">&#9670;&nbsp;</a></span>execNonQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a> EasyQtSql::Database::execNonQuery </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>sql</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes non-query SQL statement (DELETE, INSERT, UPDATE, CREATE, ALTER, etc.) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL statement string </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm" title="Exception class for SQL errors handling. ">DBException</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a5ae51f8e281cc1b41d7d48b7ca659b33"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5ae51f8e281cc1b41d7d48b7ca659b33">&#9670;&nbsp;</a></span>execQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> EasyQtSql::Database::execQuery </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>sql</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes SELECT query. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL statement string </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="class_easy_qt_sql_1_1_d_b_exception.htm" title="Exception class for SQL errors handling. ">DBException</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a7165d67d4fdfa07b3d9700d5ed5c6a63"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7165d67d4fdfa07b3d9700d5ed5c6a63">&#9670;&nbsp;</a></span>first()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Func &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int EasyQtSql::Database::first </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Func &amp;&amp;&#160;</td>
+          <td class="paramname"><em>f</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and applies function <em>f</em> to the first result row. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+    <tr><td class="paramname">f</td><td>Function (lambda) to apply to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>num rows handled with function <em>f</em></dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="class_database.htm">Database</a> db;</div><div class="line">db.<a class="code" href="class_database.htm#ad2283c7025501aafc33530d19beb02b4">first</a>(<span class="stringliteral">&quot;SELECT * FROM table&quot;</span>, [](<span class="keyword">const</span> <a class="code" href="class_query_result.htm">QueryResult</a> &amp;res)</div><div class="line">{</div><div class="line">   qDebug() &lt;&lt; res.<a class="code" href="class_query_result.htm#a023bd84f7010368d616d7dbb1b399a06">toMap</a>();</div><div class="line">});</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="a8fc62bc8b97ae861420068e2d1dcff8a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8fc62bc8b97ae861420068e2d1dcff8a">&#9670;&nbsp;</a></span>insertInto()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a> EasyQtSql::Database::insertInto </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates INSERT query wrapper. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>Table to insert into with list of columns </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a55fa6c1582cdd3dd6981f53e61dce6b4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a55fa6c1582cdd3dd6981f53e61dce6b4">&#9670;&nbsp;</a></span>lastError()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QSqlError EasyQtSql::Database::lastError </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns information about the last error that occurred on the underlying database. </p>
+
+</div>
+</div>
+<a id="a00ada326c3f4b3b01be26c552ad665dc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a00ada326c3f4b3b01be26c552ad665dc">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a>&amp; EasyQtSql::Database::operator= </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a> &amp;&amp;&#160;</td>
+          <td class="paramname"><em>other</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="af87d995c4cf5eaf4870befe2f973487d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af87d995c4cf5eaf4870befe2f973487d">&#9670;&nbsp;</a></span>prepare()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">PreparedQuery</a> EasyQtSql::Database::prepare </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>sql</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>forwardOnly</em> = <code>true</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Prepares SQL statement. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">sql</td><td>SQL statement string </td></tr>
+    <tr><td class="paramname">forwardOnly</td><td>Configure underlying QSqlQuery as forwardOnly </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ad4a237ca6acca4068b005d843e1551bb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad4a237ca6acca4068b005d843e1551bb">&#9670;&nbsp;</a></span>qSqlDatabase()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QSqlDatabase&amp; EasyQtSql::Database::qSqlDatabase </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns a reference to the wrapped QSqlDatabase object. </p>
+
+</div>
+</div>
+<a id="a1832537434940c8334fe0ca012bee8dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1832537434940c8334fe0ca012bee8dd">&#9670;&nbsp;</a></span>range()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Func &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int EasyQtSql::Database::range </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>start</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>count</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Func &amp;&amp;&#160;</td>
+          <td class="paramname"><em>f</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and applies function <em>f</em> to <em>count</em> result rows starting from index <em>start</em>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+    <tr><td class="paramname">start</td><td>Start index </td></tr>
+    <tr><td class="paramname">count</td><td>Row count to handle </td></tr>
+    <tr><td class="paramname">f</td><td>Function (lambda) to apply to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>num rows handled with function <em>f</em></dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="class_database.htm">Database</a> db;</div><div class="line">db.<a class="code" href="class_database.htm#a3b1fb50c3263775351fc981fda798207">range</a>(<span class="stringliteral">&quot;SELECT * FROM table&quot;</span>, 3, 10, [](<span class="keyword">const</span> <a class="code" href="class_query_result.htm">QueryResult</a> &amp;res)</div><div class="line">{</div><div class="line">   qDebug() &lt;&lt; res.<a class="code" href="class_query_result.htm#a023bd84f7010368d616d7dbb1b399a06">toMap</a>();</div><div class="line">});</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="abada64f2593dd9524199f570d9387296"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abada64f2593dd9524199f570d9387296">&#9670;&nbsp;</a></span>scalar() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">T EasyQtSql::Database::scalar </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and returns scalar value converted to T. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a46595f825d0fd0a5c765bc6d301fccb9" title="Returns scalar value converted to type T (the value of the first column of the current row) ...">QueryResult::scalar</a> </dd></dl>
+
+</div>
+</div>
+<a id="aa06ecb239cde85058a7ed828e06906b7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa06ecb239cde85058a7ed828e06906b7">&#9670;&nbsp;</a></span>scalar() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QVariant EasyQtSql::Database::scalar </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and returns scalar value. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a46595f825d0fd0a5c765bc6d301fccb9" title="Returns scalar value converted to type T (the value of the first column of the current row) ...">QueryResult::scalar</a> </dd></dl>
+
+</div>
+</div>
+<a id="a2f66f508f3cc25d0512d841f938adfb4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2f66f508f3cc25d0512d841f938adfb4">&#9670;&nbsp;</a></span>top()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Func &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int EasyQtSql::Database::top </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>topCount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Func &amp;&amp;&#160;</td>
+          <td class="paramname"><em>f</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes <em>query</em> and applies function <em>f</em> to <em>topCount</em> result rows. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">query</td><td>SQL query string (SELECT statement) </td></tr>
+    <tr><td class="paramname">topCount</td><td>Row count to handle </td></tr>
+    <tr><td class="paramname">f</td><td>Function (lambda) to apply to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>num rows handled with function <em>f</em></dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="class_database.htm">Database</a> db;</div><div class="line">db.<a class="code" href="class_database.htm#a91583d42e701fb399563facc3c3c58c0">top</a>(<span class="stringliteral">&quot;SELECT * FROM table&quot;</span>, 10, [](<span class="keyword">const</span> <a class="code" href="class_query_result.htm">QueryResult</a> &amp;res)</div><div class="line">{</div><div class="line">   qDebug() &lt;&lt; res.<a class="code" href="class_query_result.htm#a023bd84f7010368d616d7dbb1b399a06">toMap</a>();</div><div class="line">});</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="ad99ec8b68e916201dce33cda5018be67"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad99ec8b68e916201dce33cda5018be67">&#9670;&nbsp;</a></span>update()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_update_query.htm">UpdateQuery</a> EasyQtSql::Database::update </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates UPDATE query wrapper. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>Table to update </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="af1da52105a07c38f77aad58df9792181"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af1da52105a07c38f77aad58df9792181">&#9670;&nbsp;</a></span>m_db</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QSqlDatabase EasyQtSql::Database::m_db</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="namespace_easy_qt_sql.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 21 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_database.js

@@ -0,0 +1,21 @@
+var class_easy_qt_sql_1_1_database =
+[
+    [ "Database", "class_easy_qt_sql_1_1_database.htm#a456e50298d0dd2bb89ddbadee7bf2da5", null ],
+    [ "Database", "class_easy_qt_sql_1_1_database.htm#a4ba16ffeda09410df95720f2f7e9d872", null ],
+    [ "deleteFrom", "class_easy_qt_sql_1_1_database.htm#a0da534e09d06f26d517c2acd41446a80", null ],
+    [ "each", "class_easy_qt_sql_1_1_database.htm#aa14b9309738dd427f7060a88ae193beb", null ],
+    [ "execNonQuery", "class_easy_qt_sql_1_1_database.htm#abd563e304bb79860237c218b8bc10acd", null ],
+    [ "execQuery", "class_easy_qt_sql_1_1_database.htm#a5ae51f8e281cc1b41d7d48b7ca659b33", null ],
+    [ "first", "class_easy_qt_sql_1_1_database.htm#a7165d67d4fdfa07b3d9700d5ed5c6a63", null ],
+    [ "insertInto", "class_easy_qt_sql_1_1_database.htm#a8fc62bc8b97ae861420068e2d1dcff8a", null ],
+    [ "lastError", "class_easy_qt_sql_1_1_database.htm#a55fa6c1582cdd3dd6981f53e61dce6b4", null ],
+    [ "operator=", "class_easy_qt_sql_1_1_database.htm#a00ada326c3f4b3b01be26c552ad665dc", null ],
+    [ "prepare", "class_easy_qt_sql_1_1_database.htm#af87d995c4cf5eaf4870befe2f973487d", null ],
+    [ "qSqlDatabase", "class_easy_qt_sql_1_1_database.htm#ad4a237ca6acca4068b005d843e1551bb", null ],
+    [ "range", "class_easy_qt_sql_1_1_database.htm#a1832537434940c8334fe0ca012bee8dd", null ],
+    [ "scalar", "class_easy_qt_sql_1_1_database.htm#abada64f2593dd9524199f570d9387296", null ],
+    [ "scalar", "class_easy_qt_sql_1_1_database.htm#aa06ecb239cde85058a7ed828e06906b7", null ],
+    [ "top", "class_easy_qt_sql_1_1_database.htm#a2f66f508f3cc25d0512d841f938adfb4", null ],
+    [ "update", "class_easy_qt_sql_1_1_database.htm#ad99ec8b68e916201dce33cda5018be67", null ],
+    [ "m_db", "class_easy_qt_sql_1_1_database.htm#af1da52105a07c38f77aad58df9792181", null ]
+];

BIN
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_database.png


+ 112 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_delete_query-members.htm

@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_delete_query.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">EasyQtSql::DeleteQuery Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">EasyQtSql::DeleteQuery</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#a95b4a1b37cafa3084f16212c08784eb4">DeleteQuery</a>(const QString &amp;table, const QSqlDatabase &amp;db)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">EasyQtSql::DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#a44a2abb877f92e24e5a739b7c27e2a83">exec</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">EasyQtSql::DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#a4e428621498cbe4842681e69d7fb49e1">where</a>(const QString &amp;expr)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">EasyQtSql::DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#addbc5d95a010fbf23ba8c4f0b2d26d7f">where</a>(const QString &amp;expr, const QVariant &amp;last)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">EasyQtSql::DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#abbe1a762536df7a5490bf53e149571ca">where</a>(const QString &amp;expr, const QVariant &amp;first, const Rest &amp;... rest)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">EasyQtSql::DeleteQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 311 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_delete_query.htm

@@ -0,0 +1,311 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql::DeleteQuery Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_delete_query.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="class_easy_qt_sql_1_1_delete_query-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql::DeleteQuery Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution.  
+ <a href="class_easy_qt_sql_1_1_delete_query.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a95b4a1b37cafa3084f16212c08784eb4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#a95b4a1b37cafa3084f16212c08784eb4">DeleteQuery</a> (const QString &amp;table, const QSqlDatabase &amp;db)</td></tr>
+<tr class="separator:a95b4a1b37cafa3084f16212c08784eb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e428621498cbe4842681e69d7fb49e1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#a4e428621498cbe4842681e69d7fb49e1">where</a> (const QString &amp;expr)</td></tr>
+<tr class="memdesc:a4e428621498cbe4842681e69d7fb49e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes conditional <em>DELETE FROM table WHERE expr</em> query.  <a href="#a4e428621498cbe4842681e69d7fb49e1">More...</a><br /></td></tr>
+<tr class="separator:a4e428621498cbe4842681e69d7fb49e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:addbc5d95a010fbf23ba8c4f0b2d26d7f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#addbc5d95a010fbf23ba8c4f0b2d26d7f">where</a> (const QString &amp;expr, const QVariant &amp;last)</td></tr>
+<tr class="memdesc:addbc5d95a010fbf23ba8c4f0b2d26d7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes conditional <em>DELETE FROM table WHERE expr</em> query with parameter binding.  <a href="#addbc5d95a010fbf23ba8c4f0b2d26d7f">More...</a><br /></td></tr>
+<tr class="separator:addbc5d95a010fbf23ba8c4f0b2d26d7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abbe1a762536df7a5490bf53e149571ca"><td class="memTemplParams" colspan="2">template&lt;typename... Rest&gt; </td></tr>
+<tr class="memitem:abbe1a762536df7a5490bf53e149571ca"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#abbe1a762536df7a5490bf53e149571ca">where</a> (const QString &amp;expr, const QVariant &amp;first, const Rest &amp;... rest)</td></tr>
+<tr class="separator:abbe1a762536df7a5490bf53e149571ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a44a2abb877f92e24e5a739b7c27e2a83"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm#a44a2abb877f92e24e5a739b7c27e2a83">exec</a> ()</td></tr>
+<tr class="memdesc:a44a2abb877f92e24e5a739b7c27e2a83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes unconditional <em>DELETE FROM table</em> query.  <a href="#a44a2abb877f92e24e5a739b7c27e2a83">More...</a><br /></td></tr>
+<tr class="separator:a44a2abb877f92e24e5a739b7c27e2a83"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>QSqlQuery wrapper for <em>DELETE FROM ... WHERE ..</em> query execution. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a95b4a1b37cafa3084f16212c08784eb4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a95b4a1b37cafa3084f16212c08784eb4">&#9670;&nbsp;</a></span>DeleteQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">EasyQtSql::DeleteQuery::DeleteQuery </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QSqlDatabase &amp;&#160;</td>
+          <td class="paramname"><em>db</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a44a2abb877f92e24e5a739b7c27e2a83"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a44a2abb877f92e24e5a739b7c27e2a83">&#9670;&nbsp;</a></span>exec()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a> EasyQtSql::DeleteQuery::exec </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes unconditional <em>DELETE FROM table</em> query. </p>
+<div class="fragment"><div class="line"><span class="comment">//DELETE FROM table</span></div><div class="line">t.<a class="code" href="class_database.htm#a44fca4a9c9241481a87d59f529e98b9e">deleteFrom</a>(<span class="stringliteral">&quot;table&quot;</span>).<a class="code" href="class_delete_query.htm#ae0189c8fb1b4e206bf005a4a423be818">exec</a>();</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="a4e428621498cbe4842681e69d7fb49e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e428621498cbe4842681e69d7fb49e1">&#9670;&nbsp;</a></span>where() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a> EasyQtSql::DeleteQuery::where </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>expr</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes conditional <em>DELETE FROM table WHERE expr</em> query. </p>
+<div class="fragment"><div class="line"><span class="comment">//DELETE FROM table WHERE 1=0</span></div><div class="line">t.<a class="code" href="class_database.htm#a44fca4a9c9241481a87d59f529e98b9e">deleteFrom</a>(<span class="stringliteral">&quot;table&quot;</span>).<a class="code" href="class_delete_query.htm#a3af8292bc0da24e101cf08b863af53fe">where</a>(<span class="stringliteral">&quot;1=0&quot;</span>);</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="addbc5d95a010fbf23ba8c4f0b2d26d7f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#addbc5d95a010fbf23ba8c4f0b2d26d7f">&#9670;&nbsp;</a></span>where() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a> EasyQtSql::DeleteQuery::where </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>expr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QVariant &amp;&#160;</td>
+          <td class="paramname"><em>last</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes conditional <em>DELETE FROM table WHERE expr</em> query with parameter binding. </p>
+<p>The method supports variable count of QVariant parameters. Parameters are bound with <em>QSqlQuery::addBindValue</em>. </p><div class="fragment"><div class="line"><span class="comment">//DELETE FROM table WHERE a=1 AND b=2</span></div><div class="line">t.<a class="code" href="class_database.htm#a44fca4a9c9241481a87d59f529e98b9e">deleteFrom</a>(<span class="stringliteral">&quot;table&quot;</span>).<a class="code" href="class_delete_query.htm#a3af8292bc0da24e101cf08b863af53fe">where</a>(<span class="stringliteral">&quot;a=? AND b=?&quot;</span>, 1, 2);</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="abbe1a762536df7a5490bf53e149571ca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abbe1a762536df7a5490bf53e149571ca">&#9670;&nbsp;</a></span>where() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename... Rest&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a> EasyQtSql::DeleteQuery::where </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>expr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QVariant &amp;&#160;</td>
+          <td class="paramname"><em>first</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Rest &amp;...&#160;</td>
+          <td class="paramname"><em>rest</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="namespace_easy_qt_sql.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">DeleteQuery</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 8 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_delete_query.js

@@ -0,0 +1,8 @@
+var class_easy_qt_sql_1_1_delete_query =
+[
+    [ "DeleteQuery", "class_easy_qt_sql_1_1_delete_query.htm#a95b4a1b37cafa3084f16212c08784eb4", null ],
+    [ "exec", "class_easy_qt_sql_1_1_delete_query.htm#a44a2abb877f92e24e5a739b7c27e2a83", null ],
+    [ "where", "class_easy_qt_sql_1_1_delete_query.htm#a4e428621498cbe4842681e69d7fb49e1", null ],
+    [ "where", "class_easy_qt_sql_1_1_delete_query.htm#addbc5d95a010fbf23ba8c4f0b2d26d7f", null ],
+    [ "where", "class_easy_qt_sql_1_1_delete_query.htm#abbe1a762536df7a5490bf53e149571ca", null ]
+];

+ 111 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_insert_query-members.htm

@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_insert_query.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">EasyQtSql::InsertQuery Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">EasyQtSql::InsertQuery</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm#a273196e89e6fa6607cba428bd0a91a71">exec</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">EasyQtSql::InsertQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm#af5c14e4ec9289c0fad2767d0d39b2e30">InsertQuery</a>(const QString &amp;table, const QSqlDatabase &amp;db)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">EasyQtSql::InsertQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm#af7502896bedf2a771aa8732282f1de72">values</a>(const QVariant &amp;t)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">EasyQtSql::InsertQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm#ad1756de013829d7ec001c307f98bb409">values</a>(const QVariant &amp;first, const Rest &amp;... rest)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">EasyQtSql::InsertQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 264 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_insert_query.htm

@@ -0,0 +1,264 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql::InsertQuery Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_insert_query.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="class_easy_qt_sql_1_1_insert_query-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql::InsertQuery Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>QSqlQuery wrapper for <em>INSERT INTO table</em> query execution.  
+ <a href="class_easy_qt_sql_1_1_insert_query.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af5c14e4ec9289c0fad2767d0d39b2e30"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm#af5c14e4ec9289c0fad2767d0d39b2e30">InsertQuery</a> (const QString &amp;table, const QSqlDatabase &amp;db)</td></tr>
+<tr class="separator:af5c14e4ec9289c0fad2767d0d39b2e30"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af7502896bedf2a771aa8732282f1de72"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm#af7502896bedf2a771aa8732282f1de72">values</a> (const QVariant &amp;t)</td></tr>
+<tr class="memdesc:af7502896bedf2a771aa8732282f1de72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds list of insert-values to INSERT INTO table(...) VALUES ... query.  <a href="#af7502896bedf2a771aa8732282f1de72">More...</a><br /></td></tr>
+<tr class="separator:af7502896bedf2a771aa8732282f1de72"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1756de013829d7ec001c307f98bb409"><td class="memTemplParams" colspan="2">template&lt;typename... Rest&gt; </td></tr>
+<tr class="memitem:ad1756de013829d7ec001c307f98bb409"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm#ad1756de013829d7ec001c307f98bb409">values</a> (const QVariant &amp;first, const Rest &amp;... rest)</td></tr>
+<tr class="separator:ad1756de013829d7ec001c307f98bb409"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a273196e89e6fa6607cba428bd0a91a71"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm#a273196e89e6fa6607cba428bd0a91a71">exec</a> ()</td></tr>
+<tr class="memdesc:a273196e89e6fa6607cba428bd0a91a71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes prepared <a class="el" href="class_easy_qt_sql_1_1_insert_query.htm" title="QSqlQuery wrapper for INSERT INTO table query execution. ">InsertQuery</a> with insert values list.  <a href="#a273196e89e6fa6607cba428bd0a91a71">More...</a><br /></td></tr>
+<tr class="separator:a273196e89e6fa6607cba428bd0a91a71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>QSqlQuery wrapper for <em>INSERT INTO table</em> query execution. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="af5c14e4ec9289c0fad2767d0d39b2e30"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af5c14e4ec9289c0fad2767d0d39b2e30">&#9670;&nbsp;</a></span>InsertQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">EasyQtSql::InsertQuery::InsertQuery </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QSqlDatabase &amp;&#160;</td>
+          <td class="paramname"><em>db</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a273196e89e6fa6607cba428bd0a91a71"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a273196e89e6fa6607cba428bd0a91a71">&#9670;&nbsp;</a></span>exec()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a> EasyQtSql::InsertQuery::exec </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes prepared <a class="el" href="class_easy_qt_sql_1_1_insert_query.htm" title="QSqlQuery wrapper for INSERT INTO table query execution. ">InsertQuery</a> with insert values list. </p>
+
+</div>
+</div>
+<a id="af7502896bedf2a771aa8732282f1de72"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af7502896bedf2a771aa8732282f1de72">&#9670;&nbsp;</a></span>values() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a>&amp; EasyQtSql::InsertQuery::values </td>
+          <td>(</td>
+          <td class="paramtype">const QVariant &amp;&#160;</td>
+          <td class="paramname"><em>t</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Adds list of insert-values to INSERT INTO table(...) VALUES ... query. </p>
+<p>The method supports variable count of QVariant parameters. Parameters are bound with <em>QSqlQuery::addBindValue</em>. </p><div class="fragment"><div class="line"><a class="code" href="class_non_query_result.htm">NonQueryResult</a> res = t.<a class="code" href="class_database.htm#a8388689590c1f3adeabd2972b221bcb2">insertInto</a>(<span class="stringliteral">&quot;table (a, b, c, d)&quot;</span>)</div><div class="line">      .<a class="code" href="class_insert_query.htm#ae207fa97fdf9571fbcded31bbad9b9ed">values</a>(1, 2, 3, <span class="stringliteral">&quot;a&quot;</span>)</div><div class="line">      .<a class="code" href="class_insert_query.htm#ae207fa97fdf9571fbcded31bbad9b9ed">values</a>(4, 5, 6, <span class="stringliteral">&quot;b&quot;</span>)</div><div class="line">      .<a class="code" href="class_insert_query.htm#ae207fa97fdf9571fbcded31bbad9b9ed">values</a>(7, 8, 9, <span class="stringliteral">&quot;c&quot;</span>)</div><div class="line">      .<a class="code" href="class_insert_query.htm#a385c674dfad02ee62cfc0d3e124cd33b">exec</a>();</div></div><!-- fragment --> 
+</div>
+</div>
+<a id="ad1756de013829d7ec001c307f98bb409"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad1756de013829d7ec001c307f98bb409">&#9670;&nbsp;</a></span>values() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename... Rest&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a>&amp; EasyQtSql::InsertQuery::values </td>
+          <td>(</td>
+          <td class="paramtype">const QVariant &amp;&#160;</td>
+          <td class="paramname"><em>first</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Rest &amp;...&#160;</td>
+          <td class="paramname"><em>rest</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="namespace_easy_qt_sql.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 7 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_insert_query.js

@@ -0,0 +1,7 @@
+var class_easy_qt_sql_1_1_insert_query =
+[
+    [ "InsertQuery", "class_easy_qt_sql_1_1_insert_query.htm#af5c14e4ec9289c0fad2767d0d39b2e30", null ],
+    [ "exec", "class_easy_qt_sql_1_1_insert_query.htm#a273196e89e6fa6607cba428bd0a91a71", null ],
+    [ "values", "class_easy_qt_sql_1_1_insert_query.htm#af7502896bedf2a771aa8732282f1de72", null ],
+    [ "values", "class_easy_qt_sql_1_1_insert_query.htm#ad1756de013829d7ec001c307f98bb409", null ]
+];

+ 118 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_non_query_result-members.htm

@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_non_query_result.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">EasyQtSql::NonQueryResult Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a6efef52d7a939622bbc934ff6b90ffe0">Database</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#ae7243c345a92d89c03c2c6bfe85b5505">DeleteQuery</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a4e82dd968f0b371514243e825a5b7f86">executedQuery</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a5e578aaf2c9f489c431c988b94452222">InsertQuery</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a286ef17fc56de74af26d384b017f02dd">lastError</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a04790b33b8b424de56adac3a2a52b24d">lastInsertId</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#accc70f0c2199629ce062feb8de0c2fe7">lastQuery</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#ae6a1fb30bf4bf0757672d4fe18c925ee">numRowsAffected</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a49982aa325e19f0956d42fde9132caa2">Transaction</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a641a361691755b807702b69bce942999">unwrappedQuery</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba">UpdateQuery</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">EasyQtSql::NonQueryResult</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 433 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_non_query_result.htm

@@ -0,0 +1,433 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql::NonQueryResult Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_non_query_result.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#friends">Friends</a> &#124;
+<a href="class_easy_qt_sql_1_1_non_query_result-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql::NonQueryResult Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>QSqlQuery wrapper for non-select query results reading.  
+ <a href="class_easy_qt_sql_1_1_non_query_result.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a641a361691755b807702b69bce942999"><td class="memItemLeft" align="right" valign="top">QSqlQuery &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a641a361691755b807702b69bce942999">unwrappedQuery</a> ()</td></tr>
+<tr class="memdesc:a641a361691755b807702b69bce942999"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns reference on wrapped QSqlQuery.  <a href="#a641a361691755b807702b69bce942999">More...</a><br /></td></tr>
+<tr class="separator:a641a361691755b807702b69bce942999"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae6a1fb30bf4bf0757672d4fe18c925ee"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#ae6a1fb30bf4bf0757672d4fe18c925ee">numRowsAffected</a> () const</td></tr>
+<tr class="memdesc:ae6a1fb30bf4bf0757672d4fe18c925ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of rows affected by the result's SQL statement, or -1 if it cannot be determined.  <a href="#ae6a1fb30bf4bf0757672d4fe18c925ee">More...</a><br /></td></tr>
+<tr class="separator:ae6a1fb30bf4bf0757672d4fe18c925ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a04790b33b8b424de56adac3a2a52b24d"><td class="memItemLeft" align="right" valign="top">QVariant&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a04790b33b8b424de56adac3a2a52b24d">lastInsertId</a> () const</td></tr>
+<tr class="memdesc:a04790b33b8b424de56adac3a2a52b24d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the object ID of the most recent inserted row if the database supports it.  <a href="#a04790b33b8b424de56adac3a2a52b24d">More...</a><br /></td></tr>
+<tr class="separator:a04790b33b8b424de56adac3a2a52b24d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a286ef17fc56de74af26d384b017f02dd"><td class="memItemLeft" align="right" valign="top">QSqlError&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a286ef17fc56de74af26d384b017f02dd">lastError</a> () const</td></tr>
+<tr class="memdesc:a286ef17fc56de74af26d384b017f02dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns error information about the last error (if any) that occurred with this query.  <a href="#a286ef17fc56de74af26d384b017f02dd">More...</a><br /></td></tr>
+<tr class="separator:a286ef17fc56de74af26d384b017f02dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:accc70f0c2199629ce062feb8de0c2fe7"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#accc70f0c2199629ce062feb8de0c2fe7">lastQuery</a> () const</td></tr>
+<tr class="memdesc:accc70f0c2199629ce062feb8de0c2fe7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the text of the current query being used, or an empty string if there is no current query text.  <a href="#accc70f0c2199629ce062feb8de0c2fe7">More...</a><br /></td></tr>
+<tr class="separator:accc70f0c2199629ce062feb8de0c2fe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e82dd968f0b371514243e825a5b7f86"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a4e82dd968f0b371514243e825a5b7f86">executedQuery</a> () const</td></tr>
+<tr class="memdesc:a4e82dd968f0b371514243e825a5b7f86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last query that was successfully executed.  <a href="#a4e82dd968f0b371514243e825a5b7f86">More...</a><br /></td></tr>
+<tr class="separator:a4e82dd968f0b371514243e825a5b7f86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a6efef52d7a939622bbc934ff6b90ffe0"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a6efef52d7a939622bbc934ff6b90ffe0">Database</a></td></tr>
+<tr class="separator:a6efef52d7a939622bbc934ff6b90ffe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a49982aa325e19f0956d42fde9132caa2"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a49982aa325e19f0956d42fde9132caa2">Transaction</a></td></tr>
+<tr class="separator:a49982aa325e19f0956d42fde9132caa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e578aaf2c9f489c431c988b94452222"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#a5e578aaf2c9f489c431c988b94452222">InsertQuery</a></td></tr>
+<tr class="separator:a5e578aaf2c9f489c431c988b94452222"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf09a5441ccc57c5e2a73a97d2dd20ba"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba">UpdateQuery</a></td></tr>
+<tr class="separator:aaf09a5441ccc57c5e2a73a97d2dd20ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7243c345a92d89c03c2c6bfe85b5505"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm#ae7243c345a92d89c03c2c6bfe85b5505">DeleteQuery</a></td></tr>
+<tr class="separator:ae7243c345a92d89c03c2c6bfe85b5505"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>QSqlQuery wrapper for non-select query results reading. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a4e82dd968f0b371514243e825a5b7f86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e82dd968f0b371514243e825a5b7f86">&#9670;&nbsp;</a></span>executedQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString EasyQtSql::NonQueryResult::executedQuery </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the last query that was successfully executed. </p>
+<p>Wrapper over QSqlQuery::executedQuery() </p>
+
+</div>
+</div>
+<a id="a286ef17fc56de74af26d384b017f02dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a286ef17fc56de74af26d384b017f02dd">&#9670;&nbsp;</a></span>lastError()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QSqlError EasyQtSql::NonQueryResult::lastError </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns error information about the last error (if any) that occurred with this query. </p>
+<p>Wrapper over QSqlQuery::lastError() </p>
+
+</div>
+</div>
+<a id="a04790b33b8b424de56adac3a2a52b24d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a04790b33b8b424de56adac3a2a52b24d">&#9670;&nbsp;</a></span>lastInsertId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QVariant EasyQtSql::NonQueryResult::lastInsertId </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the object ID of the most recent inserted row if the database supports it. </p>
+<p>Wrapper over QSqlQuery::lastInsertId() </p>
+
+</div>
+</div>
+<a id="accc70f0c2199629ce062feb8de0c2fe7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#accc70f0c2199629ce062feb8de0c2fe7">&#9670;&nbsp;</a></span>lastQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString EasyQtSql::NonQueryResult::lastQuery </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the text of the current query being used, or an empty string if there is no current query text. </p>
+<p>Wrapper over QSqlQuery::lastQuery() </p>
+
+</div>
+</div>
+<a id="ae6a1fb30bf4bf0757672d4fe18c925ee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae6a1fb30bf4bf0757672d4fe18c925ee">&#9670;&nbsp;</a></span>numRowsAffected()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int EasyQtSql::NonQueryResult::numRowsAffected </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the number of rows affected by the result's SQL statement, or -1 if it cannot be determined. </p>
+<p>Wrapper over QSqlQuery::numRowsAffected() </p>
+
+</div>
+</div>
+<a id="a641a361691755b807702b69bce942999"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a641a361691755b807702b69bce942999">&#9670;&nbsp;</a></span>unwrappedQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QSqlQuery&amp; EasyQtSql::NonQueryResult::unwrappedQuery </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns reference on wrapped QSqlQuery. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Friends And Related Function Documentation</h2>
+<a id="a6efef52d7a939622bbc934ff6b90ffe0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6efef52d7a939622bbc934ff6b90ffe0">&#9670;&nbsp;</a></span>Database</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_database.htm">Database</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ae7243c345a92d89c03c2c6bfe85b5505"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae7243c345a92d89c03c2c6bfe85b5505">&#9670;&nbsp;</a></span>DeleteQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_delete_query.htm">DeleteQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a5e578aaf2c9f489c431c988b94452222"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5e578aaf2c9f489c431c988b94452222">&#9670;&nbsp;</a></span>InsertQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_insert_query.htm">InsertQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a49982aa325e19f0956d42fde9132caa2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49982aa325e19f0956d42fde9132caa2">&#9670;&nbsp;</a></span>Transaction</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_transaction.htm">Transaction</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aaf09a5441ccc57c5e2a73a97d2dd20ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaf09a5441ccc57c5e2a73a97d2dd20ba">&#9670;&nbsp;</a></span>UpdateQuery</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="class_easy_qt_sql_1_1_update_query.htm">UpdateQuery</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="namespace_easy_qt_sql.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="class_easy_qt_sql_1_1_non_query_result.htm">NonQueryResult</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 14 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_non_query_result.js

@@ -0,0 +1,14 @@
+var class_easy_qt_sql_1_1_non_query_result =
+[
+    [ "executedQuery", "class_easy_qt_sql_1_1_non_query_result.htm#a4e82dd968f0b371514243e825a5b7f86", null ],
+    [ "lastError", "class_easy_qt_sql_1_1_non_query_result.htm#a286ef17fc56de74af26d384b017f02dd", null ],
+    [ "lastInsertId", "class_easy_qt_sql_1_1_non_query_result.htm#a04790b33b8b424de56adac3a2a52b24d", null ],
+    [ "lastQuery", "class_easy_qt_sql_1_1_non_query_result.htm#accc70f0c2199629ce062feb8de0c2fe7", null ],
+    [ "numRowsAffected", "class_easy_qt_sql_1_1_non_query_result.htm#ae6a1fb30bf4bf0757672d4fe18c925ee", null ],
+    [ "unwrappedQuery", "class_easy_qt_sql_1_1_non_query_result.htm#a641a361691755b807702b69bce942999", null ],
+    [ "Database", "class_easy_qt_sql_1_1_non_query_result.htm#a6efef52d7a939622bbc934ff6b90ffe0", null ],
+    [ "DeleteQuery", "class_easy_qt_sql_1_1_non_query_result.htm#ae7243c345a92d89c03c2c6bfe85b5505", null ],
+    [ "InsertQuery", "class_easy_qt_sql_1_1_non_query_result.htm#a5e578aaf2c9f489c431c988b94452222", null ],
+    [ "Transaction", "class_easy_qt_sql_1_1_non_query_result.htm#a49982aa325e19f0956d42fde9132caa2", null ],
+    [ "UpdateQuery", "class_easy_qt_sql_1_1_non_query_result.htm#aaf09a5441ccc57c5e2a73a97d2dd20ba", null ]
+];

+ 117 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_prepared_query-members.htm

@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_prepared_query.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">EasyQtSql::PreparedQuery Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a8b37cea455273109305cb8e621b169bf">exec</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a174e2d08bc86a96989c3abbb998f04a3">exec</a>(const QVariant &amp;bindValue)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a69a40d414bdad296ac96c4b9d763e1f0">exec</a>(const In &amp;paramWrapper)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a300c4a7104556626edcafb8515c6e671">exec</a>(const Out &amp;paramWrapper)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#aadfdc03cbe2b9786c6510249e20c1c7c">exec</a>(const InOut &amp;paramWrapper)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#aeb6adc9799541df2282e580cf9672f1b">exec</a>(const QVariant &amp;bindValue, const Rest &amp;... rest)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#ac90d299e46e1aa1004923c27a18784bc">exec</a>(const In &amp;paramWrapper, const Rest &amp;... rest)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#aca02a5b7f3049f7fae088d4fae24be72">exec</a>(const Out &amp;paramWrapper, const Rest &amp;... rest)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#aaef3a15d7970c25ecae53613259604d2">exec</a>(const InOut &amp;paramWrapper, const Rest &amp;... rest)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a33f49ba1da9c372695fcbe4517a7c2b1">PreparedQuery</a>(const QString &amp;stmt, const QSqlDatabase &amp;db, bool forwardOnly=true)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">EasyQtSql::PreparedQuery</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 471 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_prepared_query.htm

@@ -0,0 +1,471 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: EasyQtSql::PreparedQuery Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_prepared_query.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="class_easy_qt_sql_1_1_prepared_query-members.htm">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">EasyQtSql::PreparedQuery Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class for query preparation and execution.  
+ <a href="class_easy_qt_sql_1_1_prepared_query.htm#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a33f49ba1da9c372695fcbe4517a7c2b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a33f49ba1da9c372695fcbe4517a7c2b1">PreparedQuery</a> (const QString &amp;stmt, const QSqlDatabase &amp;db, bool forwardOnly=true)</td></tr>
+<tr class="separator:a33f49ba1da9c372695fcbe4517a7c2b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b37cea455273109305cb8e621b169bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a8b37cea455273109305cb8e621b169bf">exec</a> ()</td></tr>
+<tr class="separator:a8b37cea455273109305cb8e621b169bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a174e2d08bc86a96989c3abbb998f04a3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a174e2d08bc86a96989c3abbb998f04a3">exec</a> (const QVariant &amp;bindValue)</td></tr>
+<tr class="separator:a174e2d08bc86a96989c3abbb998f04a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69a40d414bdad296ac96c4b9d763e1f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a69a40d414bdad296ac96c4b9d763e1f0">exec</a> (const <a class="el" href="struct_easy_qt_sql_1_1_in.htm">In</a> &amp;paramWrapper)</td></tr>
+<tr class="separator:a69a40d414bdad296ac96c4b9d763e1f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a300c4a7104556626edcafb8515c6e671"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#a300c4a7104556626edcafb8515c6e671">exec</a> (const <a class="el" href="struct_easy_qt_sql_1_1_out.htm">Out</a> &amp;paramWrapper)</td></tr>
+<tr class="separator:a300c4a7104556626edcafb8515c6e671"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aadfdc03cbe2b9786c6510249e20c1c7c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#aadfdc03cbe2b9786c6510249e20c1c7c">exec</a> (const <a class="el" href="struct_easy_qt_sql_1_1_in_out.htm">InOut</a> &amp;paramWrapper)</td></tr>
+<tr class="separator:aadfdc03cbe2b9786c6510249e20c1c7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeb6adc9799541df2282e580cf9672f1b"><td class="memTemplParams" colspan="2">template&lt;typename... Rest&gt; </td></tr>
+<tr class="memitem:aeb6adc9799541df2282e580cf9672f1b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#aeb6adc9799541df2282e580cf9672f1b">exec</a> (const QVariant &amp;bindValue, const Rest &amp;... rest)</td></tr>
+<tr class="separator:aeb6adc9799541df2282e580cf9672f1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac90d299e46e1aa1004923c27a18784bc"><td class="memTemplParams" colspan="2">template&lt;typename... Rest&gt; </td></tr>
+<tr class="memitem:ac90d299e46e1aa1004923c27a18784bc"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#ac90d299e46e1aa1004923c27a18784bc">exec</a> (const <a class="el" href="struct_easy_qt_sql_1_1_in.htm">In</a> &amp;paramWrapper, const Rest &amp;... rest)</td></tr>
+<tr class="separator:ac90d299e46e1aa1004923c27a18784bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aca02a5b7f3049f7fae088d4fae24be72"><td class="memTemplParams" colspan="2">template&lt;typename... Rest&gt; </td></tr>
+<tr class="memitem:aca02a5b7f3049f7fae088d4fae24be72"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#aca02a5b7f3049f7fae088d4fae24be72">exec</a> (const <a class="el" href="struct_easy_qt_sql_1_1_out.htm">Out</a> &amp;paramWrapper, const Rest &amp;... rest)</td></tr>
+<tr class="separator:aca02a5b7f3049f7fae088d4fae24be72"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaef3a15d7970c25ecae53613259604d2"><td class="memTemplParams" colspan="2">template&lt;typename... Rest&gt; </td></tr>
+<tr class="memitem:aaef3a15d7970c25ecae53613259604d2"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm#aaef3a15d7970c25ecae53613259604d2">exec</a> (const <a class="el" href="struct_easy_qt_sql_1_1_in_out.htm">InOut</a> &amp;paramWrapper, const Rest &amp;... rest)</td></tr>
+<tr class="separator:aaef3a15d7970c25ecae53613259604d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Class for query preparation and execution. </p>
+<div class="fragment"><div class="line"><span class="comment">//SELECT a, b, c, d FROM table WHERE a=? AND b=?</span></div><div class="line">   <a class="code" href="class_prepared_query.htm">PreparedQuery</a> query = t.<a class="code" href="class_database.htm#a03e2c9113452bb52bb7018ef2366bce1">prepare</a>(<span class="stringliteral">&quot;SELECT a, b, c, d FROM table WHERE a=? AND b=?&quot;</span>);</div><div class="line"></div><div class="line"><span class="comment">//parameters a and b are bound with values 1 and 2, query executed</span></div><div class="line">   <a class="code" href="class_query_result.htm">QueryResult</a> res = query.<a class="code" href="class_prepared_query.htm#a1013aea1638d6d04868ce39130bc1b67">exec</a>(1, 2);</div><div class="line"></div><div class="line">   <span class="keywordflow">while</span>(res.<a class="code" href="class_query_result.htm#a1c756382c20c126979b28715d529c054">next</a>())</div><div class="line">   {</div><div class="line">      <span class="comment">//fetch data here</span></div><div class="line">   }</div><div class="line"></div><div class="line"><span class="comment">//parameters a and b are bound with values 3 and 4, query executed</span></div><div class="line">   res = query.<a class="code" href="class_prepared_query.htm#a1013aea1638d6d04868ce39130bc1b67">exec</a>(3, 4);</div><div class="line"></div><div class="line">   <span class="keywordflow">while</span>(res.<a class="code" href="class_query_result.htm#a1c756382c20c126979b28715d529c054">next</a>())</div><div class="line">   {</div><div class="line">      <span class="comment">//fetch data here</span></div><div class="line">   }</div></div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a33f49ba1da9c372695fcbe4517a7c2b1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a33f49ba1da9c372695fcbe4517a7c2b1">&#9670;&nbsp;</a></span>PreparedQuery()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">EasyQtSql::PreparedQuery::PreparedQuery </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;&#160;</td>
+          <td class="paramname"><em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QSqlDatabase &amp;&#160;</td>
+          <td class="paramname"><em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>forwardOnly</em> = <code>true</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a8b37cea455273109305cb8e621b169bf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8b37cea455273109305cb8e621b169bf">&#9670;&nbsp;</a></span>exec() <span class="overload">[1/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a174e2d08bc86a96989c3abbb998f04a3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a174e2d08bc86a96989c3abbb998f04a3">&#9670;&nbsp;</a></span>exec() <span class="overload">[2/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramtype">const QVariant &amp;&#160;</td>
+          <td class="paramname"><em>bindValue</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a69a40d414bdad296ac96c4b9d763e1f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a69a40d414bdad296ac96c4b9d763e1f0">&#9670;&nbsp;</a></span>exec() <span class="overload">[3/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="struct_easy_qt_sql_1_1_in.htm">In</a> &amp;&#160;</td>
+          <td class="paramname"><em>paramWrapper</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a300c4a7104556626edcafb8515c6e671"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a300c4a7104556626edcafb8515c6e671">&#9670;&nbsp;</a></span>exec() <span class="overload">[4/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="struct_easy_qt_sql_1_1_out.htm">Out</a> &amp;&#160;</td>
+          <td class="paramname"><em>paramWrapper</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aadfdc03cbe2b9786c6510249e20c1c7c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aadfdc03cbe2b9786c6510249e20c1c7c">&#9670;&nbsp;</a></span>exec() <span class="overload">[5/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="struct_easy_qt_sql_1_1_in_out.htm">InOut</a> &amp;&#160;</td>
+          <td class="paramname"><em>paramWrapper</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aeb6adc9799541df2282e580cf9672f1b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeb6adc9799541df2282e580cf9672f1b">&#9670;&nbsp;</a></span>exec() <span class="overload">[6/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename... Rest&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramtype">const QVariant &amp;&#160;</td>
+          <td class="paramname"><em>bindValue</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Rest &amp;...&#160;</td>
+          <td class="paramname"><em>rest</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ac90d299e46e1aa1004923c27a18784bc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac90d299e46e1aa1004923c27a18784bc">&#9670;&nbsp;</a></span>exec() <span class="overload">[7/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename... Rest&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="struct_easy_qt_sql_1_1_in.htm">In</a> &amp;&#160;</td>
+          <td class="paramname"><em>paramWrapper</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Rest &amp;...&#160;</td>
+          <td class="paramname"><em>rest</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aca02a5b7f3049f7fae088d4fae24be72"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aca02a5b7f3049f7fae088d4fae24be72">&#9670;&nbsp;</a></span>exec() <span class="overload">[8/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename... Rest&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="struct_easy_qt_sql_1_1_out.htm">Out</a> &amp;&#160;</td>
+          <td class="paramname"><em>paramWrapper</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Rest &amp;...&#160;</td>
+          <td class="paramname"><em>rest</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aaef3a15d7970c25ecae53613259604d2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaef3a15d7970c25ecae53613259604d2">&#9670;&nbsp;</a></span>exec() <span class="overload">[9/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename... Rest&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">QueryResult</a>&amp; EasyQtSql::PreparedQuery::exec </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="struct_easy_qt_sql_1_1_in_out.htm">InOut</a> &amp;&#160;</td>
+          <td class="paramname"><em>paramWrapper</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Rest &amp;...&#160;</td>
+          <td class="paramname"><em>rest</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>EasyQtSql/<a class="el" href="_easy_qt_sql_8h_source.htm">EasyQtSql.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="namespace_easy_qt_sql.htm">EasyQtSql</a></li><li class="navelem"><a class="el" href="class_easy_qt_sql_1_1_prepared_query.htm">PreparedQuery</a></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 13 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_prepared_query.js

@@ -0,0 +1,13 @@
+var class_easy_qt_sql_1_1_prepared_query =
+[
+    [ "PreparedQuery", "class_easy_qt_sql_1_1_prepared_query.htm#a33f49ba1da9c372695fcbe4517a7c2b1", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#a8b37cea455273109305cb8e621b169bf", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#a174e2d08bc86a96989c3abbb998f04a3", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#a69a40d414bdad296ac96c4b9d763e1f0", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#a300c4a7104556626edcafb8515c6e671", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#aadfdc03cbe2b9786c6510249e20c1c7c", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#aeb6adc9799541df2282e580cf9672f1b", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#ac90d299e46e1aa1004923c27a18784bc", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#aca02a5b7f3049f7fae088d4fae24be72", null ],
+    [ "exec", "class_easy_qt_sql_1_1_prepared_query.htm#aaef3a15d7970c25ecae53613259604d2", null ]
+];

+ 163 - 0
QFD/EasyQtSql/docs/class_easy_qt_sql_1_1_query_result-members.htm

@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>EasyQtSql: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+  $(document).ready(initResizable);
+/* @license-end */</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">EasyQtSql
+   </div>
+   <div id="projectbrief">Easy SQL data access helper for QtSql</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_easy_qt_sql_1_1_query_result.htm','');});
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">EasyQtSql::QueryResult Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a833c39c721b00c160c8a744bd58be0a0">at</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a10971ce872fed637dad73c9ffe4681cf">boundValue</a>(int column) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a4d619dd817888bc9179a7a37a3a6a515">boundValue</a>(const QString &amp;aliasName) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#ae45b225a9a7d64f9d151bc21c353275f">boundValues</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a6efef52d7a939622bbc934ff6b90ffe0">Database</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#abe5f540e13e57385fc57c8826b61816e">executedQuery</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#aaece06902097ce3275792c3b33c6dc2d">fetchGadget</a>(T &amp;gadget) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a3aaa9b4e9c45e0a5c303f916c7ecee64">fetchList</a>(QVariantList &amp;list) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#aaf2dee4a21aed3b495ffc56de32a3fe0">fetchMap</a>(QVariantMap &amp;map) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a043b284c72b54c4a2871867196a67560">fetchObject</a>(QObject &amp;object) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a1d270b4f230b1b3db847e8e43e00e931">fetchStringList</a>(QStringList &amp;list) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#ab0dac0809b8eab8f066106391346dfb4">fetchVars</a>(int &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a54796f80b1171f84c96f04d68ff3f687">fetchVars</a>(double &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a7240189d55b45580eb22a7c4891ffc0d">fetchVars</a>(QString &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a971772dc3b77d7b37cb45453a559b400">fetchVars</a>(bool &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a16a8d3f9c94b8b258774562fcaabdbb6">fetchVars</a>(QDate &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a502f74e4c044cf4a1469db35bde3b158">fetchVars</a>(QDateTime &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#ad5b172d80a6135ea6d7d33ee656100c5">fetchVars</a>(QTime &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#ae91953f034ff0f42e28d4775b3057404">fetchVars</a>(QByteArray &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a62dc72615ea6a5f767cfc5e0a445008b">fetchVars</a>(QVariant &amp;value) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a0152c78a61e0580b1fbfd9da902aac23">fetchVars</a>(int &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a3c2f9d001255f0b8967a5047fa472b09">fetchVars</a>(double &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a58ecd7967c4befdc164c0bdaaa6f4121">fetchVars</a>(QString &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#afb95f5845ec36bf273b275e45418374b">fetchVars</a>(bool &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a1dd12aaf3dad417e24fc1a08c0fab8ed">fetchVars</a>(QDate &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a1d9856aaa98c27ae865d18f7270e4c61">fetchVars</a>(QDateTime &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a39ea9d3b1014c00d1fac339c05dd6e62">fetchVars</a>(QTime &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#aa1be09d31b9a2cc2ccaf81eca20f51b1">fetchVars</a>(QByteArray &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#abf9c67bc75c07386d7234b2c0edcd0a6">fetchVars</a>(QVariant &amp;value, Rest &amp;... rest) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#af0c451fdf40b3f070e91d2acf2dc7eb4">fetchVector</a>(QVector&lt; QVariant &gt; &amp;vector) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#aa9bb9fdbc1ee460c6fc2b252100b62cf">first</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a58ff79b8baf637e10a23a5b973bbf232">isActive</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a1f2c89653608105ef1ea34962f08db34">isForwardOnly</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a59d9dc03eba034c9dc22867235c5e728">isValid</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#ae2e079ad6bd6d1865848dd4073260d9d">last</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#ab2a5f651570c3258165ad55a7c141186">lastError</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a20322bb72518c12159e0ffa9c6003e12">lastQuery</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a3e1b0790cdb82a848f2b48ddc698001b">next</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#aa51ab0f7b9812106f0d9afda80bf1194">nextResult</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#af277d176f33fce29dd0049d4b267912c">numRowsAffected</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a118e2ac7aa817a6677b71eae61df3801">parseToIntVector</a>(int base=10, bool skipNullValues=false) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a86948d67f912f2e3e6d1a2674cd0814e">PreparedQuery</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a6617545f5395115ff050005a5939c2a6">previous</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a46595f825d0fd0a5c765bc6d301fccb9">scalar</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#aa859ae4f8e2093494f8b2849d6f4f842">scalar</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a0b1d233aa138f29eb2e5e9c1a04c8401">seek</a>(int index, bool relative=false)</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a9cd87f53f90c9061ab8d9ae66cf97e4a">size</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a7bc07b088b7abea529171589c3bdce09">toList</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a27809ada6725d479f31b66ebcbc7c95c">toMap</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a152e0d75c2c149896955c3257ca08e7d">toStringList</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#ab713b1eed43ec3d4758beab0748882d3">toVector</a>() const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a44ef2a3f6f1bc01f0eabfc4ca4d54922">toVector</a>(bool skipNullValues=false) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a49982aa325e19f0956d42fde9132caa2">Transaction</a> class</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a1537d10148632523112d5f3fc8a8de76">unwrappedQuery</a>()</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a72fe9d306b5866c15f99a3a413d9ec16">value</a>(int column) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm#a507339724a5bc10e3f5eeab709885b4a">value</a>(const QString &amp;colName) const</td><td class="entry"><a class="el" href="class_easy_qt_sql_1_1_query_result.htm">EasyQtSql::QueryResult</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
+  </ul>
+</div>
+</body>
+</html>

Some files were not shown because too many files changed in this diff