summaryrefslogtreecommitdiffstats
path: root/src/sql/kernel
diff options
context:
space:
mode:
authorMatt Broadstone <mbroadstone@devonit.com>2014-09-16 10:03:14 -0400
committerMark Brand <mabrand@mabrand.nl>2014-09-24 14:44:49 +0200
commitf84b00c6d26eb7a3a6802210d2a8b12ddbf815aa (patch)
treed21bb67ce89e136da1ae6be66a7d005f84c0cd93 /src/sql/kernel
parenteef1e51f97a652907bda29357c20388ab36f26ec (diff)
Expose QSqlDriverPrivate dbmsType in public QSqlDriver api
dbmsType was previously kept as a private variable in QSqlDriverPrivate, however it's particularly useful for QODBC users. [ChangeLog][QtSql][QSqlDriver] Add support for determining DBMS type from SQL driver. Change-Id: If1c221520da9ac4ccef85a02db078679d76eac92 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Diffstat (limited to 'src/sql/kernel')
-rw-r--r--src/sql/kernel/qsqldriver.cpp26
-rw-r--r--src/sql/kernel/qsqldriver.h14
-rw-r--r--src/sql/kernel/qsqldriver_p.h6
-rw-r--r--src/sql/kernel/qsqlresult.cpp4
4 files changed, 44 insertions, 6 deletions
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index fdeb10e915..736fe310e3 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -237,6 +237,22 @@ bool QSqlDriver::isOpenError() const
*/
/*!
+ \enum QSqlDriver::DBMSType
+
+ This enum contains DBMS types.
+
+ \value UnknownDBMS
+ \value MSSqlServer
+ \value MySqlServer
+ \value PostgreSQL
+ \value Oracle
+ \value Sybase
+ \value SQLite
+ \value Interbase
+ \value DB2
+*/
+
+/*!
\fn bool QSqlDriver::hasFeature(DriverFeature feature) const
Returns \c true if the driver supports feature \a feature; otherwise
@@ -767,6 +783,16 @@ QSql::NumericalPrecisionPolicy QSqlDriver::numericalPrecisionPolicy() const
}
/*!
+ \since 5.4
+
+ Returns the current DBMS type for the database connection.
+*/
+QSqlDriver::DBMSType QSqlDriver::dbmsType() const
+{
+ return d_func()->dbmsType;
+}
+
+/*!
\since 5.0
\internal
diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h
index 659279a3b3..767c1ac74d 100644
--- a/src/sql/kernel/qsqldriver.h
+++ b/src/sql/kernel/qsqldriver.h
@@ -71,6 +71,18 @@ public:
enum NotificationSource { UnknownSource, SelfSource, OtherSource };
+ enum DBMSType {
+ UnknownDBMS,
+ MSSqlServer,
+ MySqlServer,
+ PostgreSQL,
+ Oracle,
+ Sybase,
+ SQLite,
+ Interbase,
+ DB2
+ };
+
explicit QSqlDriver(QObject *parent=0);
~QSqlDriver();
virtual bool isOpen() const;
@@ -111,6 +123,8 @@ public:
void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
+ DBMSType dbmsType() const;
+
public Q_SLOTS:
virtual bool cancelQuery();
diff --git a/src/sql/kernel/qsqldriver_p.h b/src/sql/kernel/qsqldriver_p.h
index bb44a831a3..427e3984fa 100644
--- a/src/sql/kernel/qsqldriver_p.h
+++ b/src/sql/kernel/qsqldriver_p.h
@@ -56,21 +56,19 @@ class QSqlDriverPrivate : public QObjectPrivate
Q_DECLARE_PUBLIC(QSqlDriver)
public:
- enum DBMSType {UnknownDB, MSSqlServer, MySqlServer, PostgreSQL, Oracle, Sybase, SQLite, Interbase, DB2};
-
QSqlDriverPrivate()
: QObjectPrivate(),
isOpen(false),
isOpenError(false),
precisionPolicy(QSql::LowPrecisionDouble),
- dbmsType(UnknownDB)
+ dbmsType(QSqlDriver::UnknownDBMS)
{ }
uint isOpen;
uint isOpenError;
QSqlError error;
QSql::NumericalPrecisionPolicy precisionPolicy;
- DBMSType dbmsType;
+ QSqlDriver::DBMSType dbmsType;
};
QT_END_NAMESPACE
diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp
index 074e630394..4cd4e6fec4 100644
--- a/src/sql/kernel/qsqlresult.cpp
+++ b/src/sql/kernel/qsqlresult.cpp
@@ -87,7 +87,7 @@ QString QSqlResultPrivate::positionalToNamedBinding(const QString &query) const
result.reserve(n * 5 / 4);
QChar closingQuote;
int count = 0;
- bool ignoreBraces = (sqldriver->d_func()->dbmsType == QSqlDriverPrivate::PostgreSQL);
+ bool ignoreBraces = (sqldriver->d_func()->dbmsType == QSqlDriver::PostgreSQL);
for (int i = 0; i < n; ++i) {
QChar ch = query.at(i);
@@ -128,7 +128,7 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query)
QChar closingQuote;
int count = 0;
int i = 0;
- bool ignoreBraces = (sqldriver->d_func()->dbmsType == QSqlDriverPrivate::PostgreSQL);
+ bool ignoreBraces = (sqldriver->d_func()->dbmsType == QSqlDriver::PostgreSQL);
while (i < n) {
QChar ch = query.at(i);