File indexing completed on 2026-05-10 08:50:45
0001
0002
0003
0004
0005 #ifndef QSQLRESULT_H
0006 #define QSQLRESULT_H
0007
0008 #include <QtSql/qtsqlglobal.h>
0009 #include <QtCore/qvariant.h>
0010 #include <QtCore/qcontainerfwd.h>
0011
0012 QT_BEGIN_NAMESPACE
0013
0014
0015 class QString;
0016 class QSqlRecord;
0017 class QVariant;
0018 class QSqlDriver;
0019 class QSqlError;
0020 class QSqlResultPrivate;
0021
0022 class Q_SQL_EXPORT QSqlResult
0023 {
0024 Q_DECLARE_PRIVATE(QSqlResult)
0025 friend class QSqlQuery;
0026 friend class QSqlTableModelPrivate;
0027
0028 public:
0029 virtual ~QSqlResult();
0030 virtual QVariant handle() const;
0031
0032 protected:
0033 enum BindingSyntax {
0034 PositionalBinding,
0035 NamedBinding
0036 };
0037
0038 explicit QSqlResult(const QSqlDriver * db);
0039 QSqlResult(QSqlResultPrivate &dd);
0040 int at() const;
0041 QString lastQuery() const;
0042 QSqlError lastError() const;
0043 bool isValid() const;
0044 bool isActive() const;
0045 bool isSelect() const;
0046 bool isForwardOnly() const;
0047 const QSqlDriver* driver() const;
0048 virtual void setAt(int at);
0049 virtual void setActive(bool a);
0050 virtual void setLastError(const QSqlError& e);
0051 virtual void setQuery(const QString& query);
0052 virtual void setSelect(bool s);
0053 virtual void setForwardOnly(bool forward);
0054
0055
0056 virtual bool exec();
0057 virtual bool prepare(const QString& query);
0058 virtual bool savePrepare(const QString& sqlquery);
0059 virtual void bindValue(int pos, const QVariant& val, QSql::ParamType type);
0060 virtual void bindValue(const QString& placeholder, const QVariant& val,
0061 QSql::ParamType type);
0062 void addBindValue(const QVariant& val, QSql::ParamType type);
0063 QVariant boundValue(const QString& placeholder) const;
0064 QVariant boundValue(int pos) const;
0065 QSql::ParamType bindValueType(const QString& placeholder) const;
0066 QSql::ParamType bindValueType(int pos) const;
0067 int boundValueCount() const;
0068 #if QT_SQL_REMOVED_SINCE(6, 6)
0069 QList<QVariant> &boundValues() const;
0070 #endif
0071 QVariantList &boundValues(QT6_DECL_NEW_OVERLOAD);
0072 QVariantList boundValues(QT6_DECL_NEW_OVERLOAD) const;
0073
0074 QString executedQuery() const;
0075 QStringList boundValueNames() const;
0076 QString boundValueName(int pos) const;
0077 void clear();
0078 bool hasOutValues() const;
0079
0080 BindingSyntax bindingSyntax() const;
0081
0082 virtual QVariant data(int i) = 0;
0083 virtual bool isNull(int i) = 0;
0084 virtual bool reset(const QString& sqlquery) = 0;
0085 virtual bool fetch(int i) = 0;
0086 virtual bool fetchNext();
0087 virtual bool fetchPrevious();
0088 virtual bool fetchFirst() = 0;
0089 virtual bool fetchLast() = 0;
0090 virtual int size() = 0;
0091 virtual int numRowsAffected() = 0;
0092 virtual QSqlRecord record() const;
0093 virtual QVariant lastInsertId() const;
0094
0095 enum VirtualHookOperation { };
0096 virtual void virtual_hook(int id, void *data);
0097 virtual bool execBatch(bool arrayBind = false);
0098 virtual void detachFromResultSet();
0099 virtual void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy);
0100 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
0101 void setPositionalBindingEnabled(bool enable);
0102 bool isPositionalBindingEnabled() const;
0103 virtual bool nextResult();
0104 void resetBindCount();
0105
0106 QSqlResultPrivate *d_ptr;
0107
0108 private:
0109 Q_DISABLE_COPY(QSqlResult)
0110 };
0111
0112 QT_END_NAMESPACE
0113
0114 #endif