summaryrefslogtreecommitdiffstats
path: root/src/sql/kernel/qsqlresult.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sql/kernel/qsqlresult.cpp')
-rw-r--r--src/sql/kernel/qsqlresult.cpp59
1 files changed, 54 insertions, 5 deletions
diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp
index ea972abf50..db55ad7813 100644
--- a/src/sql/kernel/qsqlresult.cpp
+++ b/src/sql/kernel/qsqlresult.cpp
@@ -218,11 +218,24 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query)
QSqlResult::QSqlResult(const QSqlDriver *db)
{
- d = new QSqlResultPrivate(this);
+ d_ptr = new QSqlResultPrivate;
+ Q_D(QSqlResult);
+ d->q_ptr = this;
d->sqldriver = const_cast<QSqlDriver *>(db);
- if(db) {
- setNumericalPrecisionPolicy(db->numericalPrecisionPolicy());
- }
+ if (d->sqldriver)
+ setNumericalPrecisionPolicy(d->sqldriver->numericalPrecisionPolicy());
+}
+
+/*! \internal
+*/
+QSqlResult::QSqlResult(QSqlResultPrivate &dd, const QSqlDriver *db)
+{
+ d_ptr = &dd;
+ Q_D(QSqlResult);
+ d->q_ptr = this;
+ d->sqldriver = const_cast<QSqlDriver *>(db);
+ if (d->sqldriver)
+ setNumericalPrecisionPolicy(d->sqldriver->numericalPrecisionPolicy());
}
/*!
@@ -231,6 +244,7 @@ QSqlResult::QSqlResult(const QSqlDriver *db)
QSqlResult::~QSqlResult()
{
+ Q_D(QSqlResult);
delete d;
}
@@ -243,6 +257,7 @@ QSqlResult::~QSqlResult()
void QSqlResult::setQuery(const QString& query)
{
+ Q_D(QSqlResult);
d->sql = query;
}
@@ -255,6 +270,7 @@ void QSqlResult::setQuery(const QString& query)
QString QSqlResult::lastQuery() const
{
+ Q_D(const QSqlResult);
return d->sql;
}
@@ -267,6 +283,7 @@ QString QSqlResult::lastQuery() const
*/
int QSqlResult::at() const
{
+ Q_D(const QSqlResult);
return d->idx;
}
@@ -281,6 +298,7 @@ int QSqlResult::at() const
bool QSqlResult::isValid() const
{
+ Q_D(const QSqlResult);
return d->idx != QSql::BeforeFirstRow && d->idx != QSql::AfterLastRow;
}
@@ -298,6 +316,7 @@ bool QSqlResult::isValid() const
bool QSqlResult::isActive() const
{
+ Q_D(const QSqlResult);
return d->active;
}
@@ -310,6 +329,7 @@ bool QSqlResult::isActive() const
void QSqlResult::setAt(int index)
{
+ Q_D(QSqlResult);
d->idx = index;
}
@@ -325,6 +345,7 @@ void QSqlResult::setAt(int index)
void QSqlResult::setSelect(bool select)
{
+ Q_D(QSqlResult);
d->isSel = select;
}
@@ -337,6 +358,7 @@ void QSqlResult::setSelect(bool select)
bool QSqlResult::isSelect() const
{
+ Q_D(const QSqlResult);
return d->isSel;
}
@@ -347,6 +369,7 @@ bool QSqlResult::isSelect() const
const QSqlDriver *QSqlResult::driver() const
{
+ Q_D(const QSqlResult);
return d->sqldriver;
}
@@ -360,6 +383,7 @@ const QSqlDriver *QSqlResult::driver() const
void QSqlResult::setActive(bool active)
{
+ Q_D(QSqlResult);
if (active && d->executedQuery.isEmpty())
d->executedQuery = d->sql;
@@ -375,6 +399,7 @@ void QSqlResult::setActive(bool active)
void QSqlResult::setLastError(const QSqlError &error)
{
+ Q_D(QSqlResult);
d->error = error;
}
@@ -385,6 +410,7 @@ void QSqlResult::setLastError(const QSqlError &error)
QSqlError QSqlResult::lastError() const
{
+ Q_D(const QSqlResult);
return d->error;
}
@@ -519,6 +545,7 @@ bool QSqlResult::fetchPrevious()
*/
bool QSqlResult::isForwardOnly() const
{
+ Q_D(const QSqlResult);
return d->forwardOnly;
}
@@ -540,6 +567,7 @@ bool QSqlResult::isForwardOnly() const
*/
void QSqlResult::setForwardOnly(bool forward)
{
+ Q_D(QSqlResult);
d->forwardOnly = forward;
}
@@ -554,6 +582,7 @@ void QSqlResult::setForwardOnly(bool forward)
*/
bool QSqlResult::savePrepare(const QString& query)
{
+ Q_D(QSqlResult);
if (!driver())
return false;
d->clear();
@@ -579,6 +608,7 @@ bool QSqlResult::savePrepare(const QString& query)
*/
bool QSqlResult::prepare(const QString& query)
{
+ Q_D(QSqlResult);
d->sql = query;
if (d->holders.isEmpty()) {
// parse the query to memorize parameter location
@@ -595,6 +625,7 @@ bool QSqlResult::prepare(const QString& query)
*/
bool QSqlResult::exec()
{
+ Q_D(QSqlResult);
bool ret;
// fake preparation - just replace the placeholders..
QString query = lastQuery();
@@ -647,6 +678,7 @@ bool QSqlResult::exec()
*/
void QSqlResult::bindValue(int index, const QVariant& val, QSql::ParamType paramType)
{
+ Q_D(QSqlResult);
d->binds = PositionalBinding;
d->indexes[QSqlResultPrivate::fieldSerial(index)].append(index);
if (d->values.count() <= index)
@@ -675,6 +707,7 @@ void QSqlResult::bindValue(int index, const QVariant& val, QSql::ParamType param
void QSqlResult::bindValue(const QString& placeholder, const QVariant& val,
QSql::ParamType paramType)
{
+ Q_D(QSqlResult);
d->binds = NamedBinding;
// if the index has already been set when doing emulated named
// bindings - don't reset it
@@ -696,6 +729,7 @@ void QSqlResult::bindValue(const QString& placeholder, const QVariant& val,
*/
void QSqlResult::addBindValue(const QVariant& val, QSql::ParamType paramType)
{
+ Q_D(QSqlResult);
d->binds = PositionalBinding;
bindValue(d->bindCount, val, paramType);
++d->bindCount;
@@ -709,6 +743,7 @@ void QSqlResult::addBindValue(const QVariant& val, QSql::ParamType paramType)
*/
QVariant QSqlResult::boundValue(int index) const
{
+ Q_D(const QSqlResult);
return d->values.value(index);
}
@@ -722,6 +757,7 @@ QVariant QSqlResult::boundValue(int index) const
*/
QVariant QSqlResult::boundValue(const QString& placeholder) const
{
+ Q_D(const QSqlResult);
QList<int> indexes = d->indexes.value(placeholder);
return d->values.value(indexes.value(0,-1));
}
@@ -733,6 +769,7 @@ QVariant QSqlResult::boundValue(const QString& placeholder) const
*/
QSql::ParamType QSqlResult::bindValueType(int index) const
{
+ Q_D(const QSqlResult);
return d->types.value(index, QSql::In);
}
@@ -744,6 +781,7 @@ QSql::ParamType QSqlResult::bindValueType(int index) const
*/
QSql::ParamType QSqlResult::bindValueType(const QString& placeholder) const
{
+ Q_D(const QSqlResult);
return d->types.value(d->indexes.value(placeholder).value(0,-1), QSql::In);
}
@@ -754,6 +792,7 @@ QSql::ParamType QSqlResult::bindValueType(const QString& placeholder) const
*/
int QSqlResult::boundValueCount() const
{
+ Q_D(const QSqlResult);
return d->values.count();
}
@@ -765,7 +804,8 @@ int QSqlResult::boundValueCount() const
*/
QVector<QVariant>& QSqlResult::boundValues() const
{
- return d->values;
+ Q_D(const QSqlResult);
+ return const_cast<QSqlResultPrivate *>(d)->values;
}
/*!
@@ -773,6 +813,7 @@ QVector<QVariant>& QSqlResult::boundValues() const
*/
QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const
{
+ Q_D(const QSqlResult);
return d->binds;
}
@@ -782,6 +823,7 @@ QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const
*/
void QSqlResult::clear()
{
+ Q_D(QSqlResult);
d->clear();
}
@@ -795,11 +837,13 @@ void QSqlResult::clear()
*/
QString QSqlResult::executedQuery() const
{
+ Q_D(const QSqlResult);
return d->executedQuery;
}
void QSqlResult::resetBindCount()
{
+ Q_D(QSqlResult);
d->resetBindCount();
}
@@ -811,6 +855,7 @@ void QSqlResult::resetBindCount()
*/
QString QSqlResult::boundValueName(int index) const
{
+ Q_D(const QSqlResult);
return d->holderAt(index);
}
@@ -822,6 +867,7 @@ QString QSqlResult::boundValueName(int index) const
*/
bool QSqlResult::hasOutValues() const
{
+ Q_D(const QSqlResult);
if (d->types.isEmpty())
return false;
QHash<int, QSql::ParamType>::ConstIterator it;
@@ -901,6 +947,7 @@ void QSqlResult::virtual_hook(int, void *)
bool QSqlResult::execBatch(bool arrayBind)
{
Q_UNUSED(arrayBind);
+ Q_D(QSqlResult);
QVector<QVariant> values = d->values;
if (values.count() == 0)
@@ -924,6 +971,7 @@ void QSqlResult::detachFromResultSet()
*/
void QSqlResult::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy)
{
+ Q_D(QSqlResult);
d->precisionPolicy = policy;
}
@@ -931,6 +979,7 @@ void QSqlResult::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy poli
*/
QSql::NumericalPrecisionPolicy QSqlResult::numericalPrecisionPolicy() const
{
+ Q_D(const QSqlResult);
return d->precisionPolicy;
}