diff options
Diffstat (limited to 'src/sql/drivers/odbc/qsql_odbc.cpp')
-rw-r--r-- | src/sql/drivers/odbc/qsql_odbc.cpp | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index f92cda8c25..d36a224d8e 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -188,13 +188,13 @@ public: bool QODBCPrivate::isStmtHandleValid(const QSqlDriver *driver) { const QODBCDriver *odbcdriver = static_cast<const QODBCDriver*> (driver); - return disconnectCount == odbcdriver->d->disconnectCount; + return disconnectCount == odbcdriver->d_func()->disconnectCount; } void QODBCPrivate::updateStmtHandleState(const QSqlDriver *driver) { const QODBCDriver *odbcdriver = static_cast<const QODBCDriver*> (driver); - disconnectCount = odbcdriver->d->disconnectCount; + disconnectCount = odbcdriver->d_func()->disconnectCount; } static QString qWarnODBCHandle(int handleType, SQLHANDLE handle, int *nativeCode = 0) @@ -1767,15 +1767,14 @@ void QODBCResult::setForwardOnly(bool forward) QODBCDriver::QODBCDriver(QObject *parent) - : QSqlDriver(parent) + : QSqlDriver(*new QODBCDriverPrivate, parent) { - init(); } -QODBCDriver::QODBCDriver(SQLHANDLE env, SQLHANDLE con, QObject * parent) - : QSqlDriver(parent) +QODBCDriver::QODBCDriver(SQLHANDLE env, SQLHANDLE con, QObject *parent) + : QSqlDriver(*new QODBCDriverPrivate, parent) { - init(); + Q_D(QODBCDriver); d->hEnv = env; d->hDbc = con; if (env && con) { @@ -1784,11 +1783,6 @@ QODBCDriver::QODBCDriver(SQLHANDLE env, SQLHANDLE con, QObject * parent) } } -void QODBCDriver::init() -{ - d = new QODBCDriverPrivate(); -} - QODBCDriver::~QODBCDriver() { cleanup(); @@ -1796,6 +1790,7 @@ QODBCDriver::~QODBCDriver() bool QODBCDriver::hasFeature(DriverFeature f) const { + Q_D(const QODBCDriver); switch (f) { case Transactions: { if (!d->hDbc) @@ -1850,6 +1845,7 @@ bool QODBCDriver::open(const QString & db, int, const QString& connOpts) { + Q_D(QODBCDriver); if (isOpen()) close(); SQLRETURN r; @@ -1946,9 +1942,8 @@ void QODBCDriver::close() void QODBCDriver::cleanup() { + Q_D(QODBCDriver); SQLRETURN r; - if (!d) - return; if(d->hDbc) { // Open statements/descriptors handles are automatically cleaned up by SQLDisconnect @@ -2196,11 +2191,13 @@ void QODBCDriverPrivate::checkDateTimePrecision() QSqlResult *QODBCDriver::createResult() const { - return new QODBCResult(this, d); + Q_D(const QODBCDriver); + return new QODBCResult(this, const_cast<QODBCDriverPrivate*>(d)); } bool QODBCDriver::beginTransaction() { + Q_D(QODBCDriver); if (!isOpen()) { qWarning() << "QODBCDriver::beginTransaction: Database not open"; return false; @@ -2220,6 +2217,7 @@ bool QODBCDriver::beginTransaction() bool QODBCDriver::commitTransaction() { + Q_D(QODBCDriver); if (!isOpen()) { qWarning() << "QODBCDriver::commitTransaction: Database not open"; return false; @@ -2237,6 +2235,7 @@ bool QODBCDriver::commitTransaction() bool QODBCDriver::rollbackTransaction() { + Q_D(QODBCDriver); if (!isOpen()) { qWarning() << "QODBCDriver::rollbackTransaction: Database not open"; return false; @@ -2254,6 +2253,7 @@ bool QODBCDriver::rollbackTransaction() bool QODBCDriver::endTrans() { + Q_D(QODBCDriver); SQLUINTEGER ac(SQL_AUTOCOMMIT_ON); SQLRETURN r = SQLSetConnectAttr(d->hDbc, SQL_ATTR_AUTOCOMMIT, @@ -2268,6 +2268,7 @@ bool QODBCDriver::endTrans() QStringList QODBCDriver::tables(QSql::TableType type) const { + Q_D(const QODBCDriver); QStringList tl; if (!isOpen()) return tl; @@ -2345,6 +2346,7 @@ QStringList QODBCDriver::tables(QSql::TableType type) const QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const { + Q_D(const QODBCDriver); QSqlIndex index(tablename); if (!isOpen()) return index; @@ -2360,7 +2362,7 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const return index; } QString catalog, schema, table; - d->splitTableQualifier(tablename, catalog, schema, table); + const_cast<QODBCDriverPrivate*>(d)->splitTableQualifier(tablename, catalog, schema, table); if (isIdentifierEscaped(catalog, QSqlDriver::TableName)) catalog = stripDelimiters(catalog, QSqlDriver::TableName); @@ -2472,13 +2474,14 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const QSqlRecord QODBCDriver::record(const QString& tablename) const { + Q_D(const QODBCDriver); QSqlRecord fil; if (!isOpen()) return fil; SQLHANDLE hStmt; QString catalog, schema, table; - d->splitTableQualifier(tablename, catalog, schema, table); + const_cast<QODBCDriverPrivate*>(d)->splitTableQualifier(tablename, catalog, schema, table); if (isIdentifierEscaped(catalog, QSqlDriver::TableName)) catalog = stripDelimiters(catalog, QSqlDriver::TableName); @@ -2597,12 +2600,14 @@ QString QODBCDriver::formatValue(const QSqlField &field, QVariant QODBCDriver::handle() const { + Q_D(const QODBCDriver); return QVariant(qRegisterMetaType<SQLHANDLE>("SQLHANDLE"), &d->hDbc); } QString QODBCDriver::escapeIdentifier(const QString &identifier, IdentifierType) const { - QChar quote = d->quoteChar(); + Q_D(const QODBCDriver); + QChar quote = const_cast<QODBCDriverPrivate*>(d)->quoteChar(); QString res = identifier; if(!identifier.isEmpty() && !identifier.startsWith(quote) && !identifier.endsWith(quote) ) { res.replace(quote, QString(quote)+QString(quote)); @@ -2614,7 +2619,8 @@ QString QODBCDriver::escapeIdentifier(const QString &identifier, IdentifierType) bool QODBCDriver::isIdentifierEscaped(const QString &identifier, IdentifierType) const { - QChar quote = d->quoteChar(); + Q_D(const QODBCDriver); + QChar quote = const_cast<QODBCDriverPrivate*>(d)->quoteChar(); return identifier.size() > 2 && identifier.startsWith(quote) //left delimited && identifier.endsWith(quote); //right delimited |