1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtSql module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#ifndef QSQLQUERY_H
41#define QSQLQUERY_H
42
43#include <QtSql/qtsqlglobal.h>
44#include <QtSql/qsqldatabase.h>
45#include <QtCore/qstring.h>
46
47QT_BEGIN_NAMESPACE
48
49
50class QVariant;
51class QSqlDriver;
52class QSqlError;
53class QSqlResult;
54class QSqlRecord;
55template <class Key, class T> class QMap;
56class QSqlQueryPrivate;
57
58class Q_SQL_EXPORT QSqlQuery
59{
60public:
61 explicit QSqlQuery(QSqlResult *r);
62 explicit QSqlQuery(const QString& query = QString(), QSqlDatabase db = QSqlDatabase());
63 explicit QSqlQuery(QSqlDatabase db);
64 QSqlQuery(const QSqlQuery& other);
65 QSqlQuery& operator=(const QSqlQuery& other);
66 ~QSqlQuery();
67
68 bool isValid() const;
69 bool isActive() const;
70 bool isNull(int field) const;
71 bool isNull(const QString &name) const;
72 int at() const;
73 QString lastQuery() const;
74 int numRowsAffected() const;
75 QSqlError lastError() const;
76 bool isSelect() const;
77 int size() const;
78 const QSqlDriver* driver() const;
79 const QSqlResult* result() const;
80 bool isForwardOnly() const;
81 QSqlRecord record() const;
82
83 void setForwardOnly(bool forward);
84 bool exec(const QString& query);
85 QVariant value(int i) const;
86 QVariant value(const QString& name) const;
87
88 void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
89 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
90
91 bool seek(int i, bool relative = false);
92 bool next();
93 bool previous();
94 bool first();
95 bool last();
96
97 void clear();
98
99 // prepared query support
100 bool exec();
101 enum BatchExecutionMode { ValuesAsRows, ValuesAsColumns };
102 bool execBatch(BatchExecutionMode mode = ValuesAsRows);
103 bool prepare(const QString& query);
104 void bindValue(const QString& placeholder, const QVariant& val,
105 QSql::ParamType type = QSql::In);
106 void bindValue(int pos, const QVariant& val, QSql::ParamType type = QSql::In);
107 void addBindValue(const QVariant& val, QSql::ParamType type = QSql::In);
108 QVariant boundValue(const QString& placeholder) const;
109 QVariant boundValue(int pos) const;
110 QMap<QString, QVariant> boundValues() const;
111 QString executedQuery() const;
112 QVariant lastInsertId() const;
113 void finish();
114 bool nextResult();
115
116private:
117 QSqlQueryPrivate* d;
118};
119
120QT_END_NAMESPACE
121
122#endif // QSQLQUERY_H
123