Use Q_DECLARE_PRIVATE for Oracle and DB2 plugins
This completes the change started with
0bdc86d9ef by providing the implementation
for the Oracle and DB2 sqldrivers
Change-Id: Ia14415c6d7dea51f1369a81236f79aff892b3af7
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
bb10
parent
f73a7ca46c
commit
97c6fd22d2
|
|
@ -1132,15 +1132,14 @@ void QDB2Result::detachFromResultSet()
|
|||
/************************************/
|
||||
|
||||
QDB2Driver::QDB2Driver(QObject* parent)
|
||||
: QSqlDriver(parent)
|
||||
: QSqlDriver(*new QDB2DriverPrivate, parent)
|
||||
{
|
||||
d = new QDB2DriverPrivate;
|
||||
}
|
||||
|
||||
QDB2Driver::QDB2Driver(Qt::HANDLE env, Qt::HANDLE con, QObject* parent)
|
||||
: QSqlDriver(parent)
|
||||
: QSqlDriver(*new QDB2DriverPrivate, parent)
|
||||
{
|
||||
d = new QDB2DriverPrivate;
|
||||
Q_D(QDB2Driver);
|
||||
d->hEnv = (SQLHANDLE)env;
|
||||
d->hDbc = (SQLHANDLE)con;
|
||||
if (env && con) {
|
||||
|
|
@ -1157,6 +1156,7 @@ QDB2Driver::~QDB2Driver()
|
|||
bool QDB2Driver::open(const QString& db, const QString& user, const QString& password, const QString& host, int port,
|
||||
const QString& connOpts)
|
||||
{
|
||||
Q_D(QDB2Driver);
|
||||
if (isOpen())
|
||||
close();
|
||||
SQLRETURN r;
|
||||
|
|
@ -1259,6 +1259,7 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
|
|||
|
||||
void QDB2Driver::close()
|
||||
{
|
||||
Q_D(QDB2Driver);
|
||||
SQLRETURN r;
|
||||
if (d->hDbc) {
|
||||
// Open statements/descriptors handles are automatically cleaned up by SQLDisconnect
|
||||
|
|
@ -1285,11 +1286,13 @@ void QDB2Driver::close()
|
|||
|
||||
QSqlResult *QDB2Driver::createResult() const
|
||||
{
|
||||
Q_D(const QDB2Driver);
|
||||
return new QDB2Result(this, d);
|
||||
}
|
||||
|
||||
QSqlRecord QDB2Driver::record(const QString& tableName) const
|
||||
{
|
||||
Q_D(const QDB2Driver);
|
||||
QSqlRecord fil;
|
||||
if (!isOpen())
|
||||
return fil;
|
||||
|
|
@ -1363,6 +1366,7 @@ QSqlRecord QDB2Driver::record(const QString& tableName) const
|
|||
|
||||
QStringList QDB2Driver::tables(QSql::TableType type) const
|
||||
{
|
||||
Q_D(const QDB2Driver);
|
||||
QStringList tl;
|
||||
if (!isOpen())
|
||||
return tl;
|
||||
|
|
@ -1434,6 +1438,7 @@ QStringList QDB2Driver::tables(QSql::TableType type) const
|
|||
|
||||
QSqlIndex QDB2Driver::primaryIndex(const QString& tablename) const
|
||||
{
|
||||
Q_D(const QDB2Driver);
|
||||
QSqlIndex index(tablename);
|
||||
if (!isOpen())
|
||||
return index;
|
||||
|
|
@ -1535,6 +1540,7 @@ bool QDB2Driver::beginTransaction()
|
|||
|
||||
bool QDB2Driver::commitTransaction()
|
||||
{
|
||||
Q_D(QDB2Driver);
|
||||
if (!isOpen()) {
|
||||
qWarning("QDB2Driver::commitTransaction: Database not open");
|
||||
return false;
|
||||
|
|
@ -1552,6 +1558,7 @@ bool QDB2Driver::commitTransaction()
|
|||
|
||||
bool QDB2Driver::rollbackTransaction()
|
||||
{
|
||||
Q_D(QDB2Driver);
|
||||
if (!isOpen()) {
|
||||
qWarning("QDB2Driver::rollbackTransaction: Database not open");
|
||||
return false;
|
||||
|
|
@ -1569,6 +1576,7 @@ bool QDB2Driver::rollbackTransaction()
|
|||
|
||||
bool QDB2Driver::setAutoCommit(bool autoCommit)
|
||||
{
|
||||
Q_D(QDB2Driver);
|
||||
SQLUINTEGER ac = autoCommit ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF;
|
||||
SQLRETURN r = SQLSetConnectAttr(d->hDbc,
|
||||
SQL_ATTR_AUTOCOMMIT,
|
||||
|
|
@ -1627,6 +1635,7 @@ QString QDB2Driver::formatValue(const QSqlField &field, bool trimStrings) const
|
|||
|
||||
QVariant QDB2Driver::handle() const
|
||||
{
|
||||
Q_D(const QDB2Driver);
|
||||
return QVariant(qRegisterMetaType<SQLHANDLE>("SQLHANDLE"), &d->hDbc);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ private:
|
|||
|
||||
class Q_EXPORT_SQLDRIVER_DB2 QDB2Driver : public QSqlDriver
|
||||
{
|
||||
Q_DECLARE_PRIVATE(QDB2Driver)
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QDB2Driver(QObject* parent = 0);
|
||||
|
|
@ -127,7 +128,6 @@ public:
|
|||
|
||||
private:
|
||||
bool setAutoCommit(bool autoCommit);
|
||||
QDB2DriverPrivate* d;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -2088,10 +2088,9 @@ void QOCIResult::virtual_hook(int id, void *data)
|
|||
|
||||
|
||||
QOCIDriver::QOCIDriver(QObject* parent)
|
||||
: QSqlDriver(parent)
|
||||
: QSqlDriver(*new QOCIDriverPrivate, parent)
|
||||
{
|
||||
d = new QOCIDriverPrivate();
|
||||
|
||||
Q_D(QOCIDriver);
|
||||
#ifdef QOCI_THREADED
|
||||
const ub4 mode = OCI_UTF16 | OCI_OBJECT | OCI_THREADED;
|
||||
#else
|
||||
|
|
@ -2116,9 +2115,9 @@ QOCIDriver::QOCIDriver(QObject* parent)
|
|||
}
|
||||
|
||||
QOCIDriver::QOCIDriver(OCIEnv* env, OCISvcCtx* ctx, QObject* parent)
|
||||
: QSqlDriver(parent)
|
||||
: QSqlDriver(*new QOCIDriverPrivate, parent)
|
||||
{
|
||||
d = new QOCIDriverPrivate();
|
||||
Q_D(QOCIDriver);
|
||||
d->env = env;
|
||||
d->svc = ctx;
|
||||
|
||||
|
|
@ -2132,6 +2131,7 @@ QOCIDriver::QOCIDriver(OCIEnv* env, OCISvcCtx* ctx, QObject* parent)
|
|||
|
||||
QOCIDriver::~QOCIDriver()
|
||||
{
|
||||
Q_D(QOCIDriver);
|
||||
if (isOpen())
|
||||
close();
|
||||
int r = OCIHandleFree(d->err, OCI_HTYPE_ERROR);
|
||||
|
|
@ -2144,6 +2144,7 @@ QOCIDriver::~QOCIDriver()
|
|||
|
||||
bool QOCIDriver::hasFeature(DriverFeature f) const
|
||||
{
|
||||
Q_D(const QOCIDriver);
|
||||
switch (f) {
|
||||
case Transactions:
|
||||
case LastInsertId:
|
||||
|
|
@ -2202,6 +2203,7 @@ bool QOCIDriver::open(const QString & db,
|
|||
int port,
|
||||
const QString &opts)
|
||||
{
|
||||
Q_D(QOCIDriver);
|
||||
int r;
|
||||
|
||||
if (isOpen())
|
||||
|
|
@ -2288,6 +2290,7 @@ bool QOCIDriver::open(const QString & db,
|
|||
|
||||
void QOCIDriver::close()
|
||||
{
|
||||
Q_D(QOCIDriver);
|
||||
if (!isOpen())
|
||||
return;
|
||||
|
||||
|
|
@ -2305,11 +2308,13 @@ void QOCIDriver::close()
|
|||
|
||||
QSqlResult *QOCIDriver::createResult() const
|
||||
{
|
||||
Q_D(const QOCIDriver);
|
||||
return new QOCIResult(this, d);
|
||||
}
|
||||
|
||||
bool QOCIDriver::beginTransaction()
|
||||
{
|
||||
Q_D(QOCIDriver);
|
||||
if (!isOpen()) {
|
||||
qWarning("QOCIDriver::beginTransaction: Database not open");
|
||||
return false;
|
||||
|
|
@ -2330,6 +2335,7 @@ bool QOCIDriver::beginTransaction()
|
|||
|
||||
bool QOCIDriver::commitTransaction()
|
||||
{
|
||||
Q_D(QOCIDriver);
|
||||
if (!isOpen()) {
|
||||
qWarning("QOCIDriver::commitTransaction: Database not open");
|
||||
return false;
|
||||
|
|
@ -2349,6 +2355,7 @@ bool QOCIDriver::commitTransaction()
|
|||
|
||||
bool QOCIDriver::rollbackTransaction()
|
||||
{
|
||||
Q_D(QOCIDriver);
|
||||
if (!isOpen()) {
|
||||
qWarning("QOCIDriver::rollbackTransaction: Database not open");
|
||||
return false;
|
||||
|
|
@ -2368,6 +2375,7 @@ bool QOCIDriver::rollbackTransaction()
|
|||
|
||||
QStringList QOCIDriver::tables(QSql::TableType type) const
|
||||
{
|
||||
Q_D(const QOCIDriver);
|
||||
QStringList tl;
|
||||
QStringList sysUsers = QStringList() << QLatin1String("MDSYS")
|
||||
<< QLatin1String("LBACSYS")
|
||||
|
|
@ -2473,6 +2481,7 @@ void qSplitTableAndOwner(const QString & tname, QString * tbl,
|
|||
|
||||
QSqlRecord QOCIDriver::record(const QString& tablename) const
|
||||
{
|
||||
Q_D(const QOCIDriver);
|
||||
QSqlRecord fil;
|
||||
if (!isOpen())
|
||||
return fil;
|
||||
|
|
@ -2546,6 +2555,7 @@ QSqlRecord QOCIDriver::record(const QString& tablename) const
|
|||
|
||||
QSqlIndex QOCIDriver::primaryIndex(const QString& tablename) const
|
||||
{
|
||||
Q_D(const QOCIDriver);
|
||||
QSqlIndex idx(tablename);
|
||||
if (!isOpen())
|
||||
return idx;
|
||||
|
|
@ -2666,6 +2676,7 @@ QString QOCIDriver::formatValue(const QSqlField &field, bool trimStrings) const
|
|||
|
||||
QVariant QOCIDriver::handle() const
|
||||
{
|
||||
Q_D(const QOCIDriver);
|
||||
return QVariant::fromValue(d->env);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ class QOCIDriverPrivate;
|
|||
|
||||
class Q_EXPORT_SQLDRIVER_OCI QOCIDriver : public QSqlDriver
|
||||
{
|
||||
Q_DECLARE_PRIVATE(QOCIDriver)
|
||||
Q_OBJECT
|
||||
friend struct QOCIResultPrivate;
|
||||
friend class QOCIPrivate;
|
||||
|
|
@ -101,8 +102,6 @@ protected:
|
|||
bool beginTransaction();
|
||||
bool commitTransaction();
|
||||
bool rollbackTransaction();
|
||||
private:
|
||||
QOCIDriverPrivate *d;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
Loading…
Reference in New Issue