Qt 4.8
Public Types | Signals | Public Functions | Protected Slots | Protected Functions | Friends | List of all members
QSqlDriver Class Referenceabstract

The QSqlDriver class is an abstract base class for accessing specific SQL databases. More...

#include <qsqldriver.h>

Inheritance diagram for QSqlDriver:
QObject QDB2Driver QIBaseDriver QMYSQLDriver QOCIDriver QODBCDriver QPSQLDriver QSQLite2Driver QSQLiteDriver QSqlNullDriver QSymSQLDriver QTDSDriver

Public Types

enum  DriverFeature {
  Transactions, QuerySize, BLOB, Unicode,
  PreparedQueries, NamedPlaceholders, PositionalPlaceholders, LastInsertId,
  BatchOperations, SimpleLocking, LowPrecisionNumbers, EventNotifications,
  FinishQuery, MultipleResultSets
}
 This enum contains a list of features a driver might support. More...
 
enum  IdentifierType { FieldName, TableName }
 This enum contains a list of SQL identifier types. More...
 
enum  StatementType {
  WhereStatement, SelectStatement, UpdateStatement, InsertStatement,
  DeleteStatement
}
 This enum contains a list of SQL statement (or clause) types the driver can create. More...
 

Signals

void notification (const QString &name)
 This signal is emitted when the database posts an event notification that the driver subscribes to. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 

Public Functions

virtual bool beginTransaction ()
 This function is called to begin a transaction. More...
 
virtual void close ()=0
 Derived classes must reimplement this pure virtual function in order to close the database connection. More...
 
virtual bool commitTransaction ()
 This function is called to commit a transaction. More...
 
virtual QSqlResultcreateResult () const =0
 Creates an empty SQL result on the database. More...
 
virtual QString escapeIdentifier (const QString &identifier, IdentifierType type) const
 Returns the identifier escaped according to the database rules. More...
 
virtual QString formatValue (const QSqlField &field, bool trimStrings=false) const
 Returns a string representation of the field value for the database. More...
 
virtual QVariant handle () const
 Returns the low-level database handle wrapped in a QVariant or an invalid variant if there is no handle. More...
 
virtual bool hasFeature (DriverFeature f) const =0
 Returns true if the driver supports feature feature; otherwise returns false. More...
 
bool isIdentifierEscaped (const QString &identifier, IdentifierType type) const
 Returns whether identifier is escaped according to the database rules. More...
 
virtual bool isOpen () const
 Returns true if the database connection is open; otherwise returns false. More...
 
bool isOpenError () const
 Returns true if the there was an error opening the database connection; otherwise returns false. More...
 
QSqlError lastError () const
 Returns a QSqlError object which contains information about the last error that occurred on the database. More...
 
QSql::NumericalPrecisionPolicy numericalPrecisionPolicy () const
 Returns the current default precision policy for the database connection. More...
 
virtual bool open (const QString &db, const QString &user=QString(), const QString &password=QString(), const QString &host=QString(), int port=-1, const QString &connOpts=QString())=0
 Derived classes must reimplement this pure virtual function to open a database connection on database db, using user name user, password password, host host, port port and connection options options. More...
 
virtual QSqlIndex primaryIndex (const QString &tableName) const
 Returns the primary index for table tableName. More...
 
 QSqlDriver (QObject *parent=0)
 Constructs a new driver with the given parent. More...
 
virtual QSqlRecord record (const QString &tableName) const
 Returns a QSqlRecord populated with the names of the fields in table tableName. More...
 
virtual bool rollbackTransaction ()
 This function is called to rollback a transaction. More...
 
void setNumericalPrecisionPolicy (QSql::NumericalPrecisionPolicy precisionPolicy)
 Sets the default numerical precision policy used by queries created by this driver to precisionPolicy. More...
 
virtual QString sqlStatement (StatementType type, const QString &tableName, const QSqlRecord &rec, bool preparedStatement) const
 Returns a SQL statement of type type for the table tableName with the values from rec. More...
 
QString stripDelimiters (const QString &identifier, IdentifierType type) const
 Returns the identifier with the leading and trailing delimiters removed, identifier can either be a table name or field name, dependent on type. More...
 
QStringList subscribedToNotifications () const
 Returns a list of the names of the event notifications that are currently subscribed to. More...
 
bool subscribeToNotification (const QString &name)
 This function is called to subscribe to event notifications from the database. More...
 
virtual QStringList tables (QSql::TableType tableType) const
 Returns a list of the names of the tables in the database. More...
 
bool unsubscribeFromNotification (const QString &name)
 This function is called to unsubscribe from event notifications from the database. More...
 
 ~QSqlDriver ()
 Destroys the object and frees any allocated resources. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Slots

bool isIdentifierEscapedImplementation (const QString &identifier, IdentifierType type) const
 This slot returns whether identifier is escaped according to the database rules. More...
 
QString stripDelimitersImplementation (const QString &identifier, IdentifierType type) const
 This slot returns identifier with the leading and trailing delimiters removed, identifier can either be a tablename or field name, dependent on type. More...
 
QStringList subscribedToNotificationsImplementation () const
 Returns a list of the names of the event notifications that are currently subscribed to. More...
 
bool subscribeToNotificationImplementation (const QString &name)
 This slot is called to subscribe to event notifications from the database. More...
 
bool unsubscribeFromNotificationImplementation (const QString &name)
 This slot is called to unsubscribe from event notifications from the database. More...
 

Protected Functions

virtual void setLastError (const QSqlError &e)
 This function is used to set the value of the last error, error, that occurred on the database. More...
 
virtual void setOpen (bool o)
 This function sets the open state of the database to open. More...
 
virtual void setOpenError (bool e)
 This function sets the open error state of the database to error. More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 

Friends

class QSqlDatabase
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QSqlDriver class is an abstract base class for accessing specific SQL databases.

Attention
Module: QtSql

This class should not be used directly. Use QSqlDatabase instead.

If you want to create your own SQL drivers, you can subclass this class and reimplement its pure virtual functions and those virtual functions that you need. See How to Write Your Own Database Driver for more information.

See also
QSqlDatabase, QSqlResult

Definition at line 68 of file qsqldriver.h.

Enumerations

◆ DriverFeature

This enum contains a list of features a driver might support.

Use hasFeature() to query whether a feature is supported or not.

  • Transactions Whether the driver supports SQL transactions.
  • QuerySize Whether the database is capable of reporting the size of a query. Note that some databases do not support returning the size (i.e. number of rows returned) of a query, in which case QSqlQuery::size() will return -1.
  • BLOB Whether the driver supports Binary Large Object fields.
  • Unicode Whether the driver supports Unicode strings if the database server does.
  • PreparedQueries Whether the driver supports prepared query execution.
  • NamedPlaceholders Whether the driver supports the use of named placeholders.
  • PositionalPlaceholders Whether the driver supports the use of positional placeholders.
  • LastInsertId Whether the driver supports returning the Id of the last touched row.
  • BatchOperations Whether the driver supports batched operations, see QSqlQuery::execBatch()
  • SimpleLocking Whether the driver disallows a write lock on a table while other queries have a read lock on it.
  • LowPrecisionNumbers Whether the driver allows fetching numerical values with low precision.
  • EventNotifications Whether the driver supports database event notifications.
  • FinishQuery Whether the driver can do any low-level resource cleanup when QSqlQuery::finish() is called.
  • MultipleResultSets Whether the driver can access multiple result sets returned from batched statements or stored procedures.

More information about supported features can be found in the Qt SQL driver documentation.

See also
hasFeature()
Enumerator
Transactions 
QuerySize 
BLOB 
Unicode 
PreparedQueries 
NamedPlaceholders 
PositionalPlaceholders 
LastInsertId 
BatchOperations 
SimpleLocking 
LowPrecisionNumbers 
EventNotifications 
FinishQuery 
MultipleResultSets 

Definition at line 75 of file qsqldriver.h.

◆ IdentifierType

This enum contains a list of SQL identifier types.

  • FieldName A SQL field name
  • TableName A SQL table name
Enumerator
FieldName 
TableName 

Definition at line 83 of file qsqldriver.h.

◆ StatementType

This enum contains a list of SQL statement (or clause) types the driver can create.

  • WhereStatement An SQL WHERE statement (e.g., WHERE f = 5).
  • SelectStatement An SQL SELECT statement (e.g., SELECT f FROM t).
  • UpdateStatement An SQL UPDATE statement (e.g., UPDATE TABLE t set f = 1).
  • InsertStatement An SQL INSERT statement (e.g., INSERT INTO t (f) values (1)).
  • DeleteStatement An SQL DELETE statement (e.g., DELETE FROM t).
See also
sqlStatement()
Enumerator
WhereStatement 
SelectStatement 
UpdateStatement 
InsertStatement 
DeleteStatement 

Definition at line 80 of file qsqldriver.h.

Constructors and Destructors

◆ QSqlDriver()

QSqlDriver::QSqlDriver ( QObject parent = 0)
explicit

Constructs a new driver with the given parent.

Definition at line 112 of file qsqldriver.cpp.

113  : QObject(*new QSqlDriverPrivate, parent)
114 {
115 }
Q_INVOKABLE QObject(QObject *parent=0)
Constructs an object with parent object parent.
Definition: qobject.cpp:753

◆ ~QSqlDriver()

QSqlDriver::~QSqlDriver ( )

Destroys the object and frees any allocated resources.

Definition at line 121 of file qsqldriver.cpp.

122 {
123 }

Functions

◆ beginTransaction()

bool QSqlDriver::beginTransaction ( )
virtual

This function is called to begin a transaction.

If successful, return true, otherwise return false. The default implementation does nothing and returns false.

See also
commitTransaction(), rollbackTransaction()

Reimplemented in QODBCDriver, QPSQLDriver, QMYSQLDriver, QTDSDriver, QOCIDriver, QSymSQLDriver, QSQLite2Driver, QSQLiteDriver, QIBaseDriver, and QDB2Driver.

Definition at line 312 of file qsqldriver.cpp.

313 {
314  return false;
315 }

◆ close()

bool QSqlDriver::close ( )
pure virtual

Derived classes must reimplement this pure virtual function in order to close the database connection.

Return true on success, false on failure.

See also
open(), setOpen()

Implemented in QPSQLDriver, QODBCDriver, QMYSQLDriver, QSymSQLDriver, QTDSDriver, QOCIDriver, QSQLite2Driver, QSQLiteDriver, QSqlNullDriver, QIBaseDriver, and QDB2Driver.

◆ commitTransaction()

bool QSqlDriver::commitTransaction ( )
virtual

This function is called to commit a transaction.

If successful, return true, otherwise return false. The default implementation does nothing and returns false.

See also
beginTransaction(), rollbackTransaction()

Reimplemented in QODBCDriver, QPSQLDriver, QMYSQLDriver, QTDSDriver, QOCIDriver, QSymSQLDriver, QSQLite2Driver, QSQLiteDriver, QIBaseDriver, and QDB2Driver.

Definition at line 325 of file qsqldriver.cpp.

326 {
327  return false;
328 }

◆ createResult()

QSqlResult * QSqlDriver::createResult ( ) const
pure virtual

Creates an empty SQL result on the database.

Derived classes must reimplement this function and return a QSqlResult object appropriate for their database to the caller.

Implemented in QPSQLDriver, QODBCDriver, QMYSQLDriver, QTDSDriver, QSymSQLDriver, QOCIDriver, QSQLite2Driver, QSQLiteDriver, QSqlNullDriver, QIBaseDriver, and QDB2Driver.

Referenced by qInit().

◆ escapeIdentifier()

QString QSqlDriver::escapeIdentifier ( const QString identifier,
IdentifierType  type 
) const
virtual

Returns the identifier escaped according to the database rules.

identifier can either be a table name or field name, dependent on type.

The default implementation does nothing.

See also
isIdentifierEscaped()

Reimplemented in QODBCDriver, QPSQLDriver, QMYSQLDriver, QSymSQLDriver, QTDSDriver, QOCIDriver, QSQLite2Driver, QIBaseDriver, QDB2Driver, and QSQLiteDriver.

Definition at line 412 of file qsqldriver.cpp.

Referenced by prepareIdentifier().

413 {
414  return identifier;
415 }

◆ formatValue()

QString QSqlDriver::formatValue ( const QSqlField field,
bool  trimStrings = false 
) const
virtual

Returns a string representation of the field value for the database.

Use the other formatValue() overload instead.

This is used, for example, when constructing INSERT and UPDATE statements.

The default implementation returns the value formatted as a string according to the following rules:

  • If field is character data, the value is returned enclosed in single quotation marks, which is appropriate for many SQL databases. Any embedded single-quote characters are escaped (replaced with two single-quote characters). If trimStrings is true (the default is false), all trailing whitespace is trimmed from the field.

  • If field is date/time data, the value is formatted in ISO format and enclosed in single quotation marks. If the date/time data is invalid, "NULL" is returned.

  • If field is bytearray data, and the driver can edit binary fields, the value is formatted as a hexadecimal string.

  • For any other field type, toString() is called on its value and the result of this is returned.

See also
QVariant::toString()

Reimplemented in QPSQLDriver, QODBCDriver, QMYSQLDriver, QTDSDriver, QOCIDriver, QIBaseDriver, and QDB2Driver.

Definition at line 597 of file qsqldriver.cpp.

Referenced by QDB2Driver::formatValue(), QIBaseDriver::formatValue(), QOCIDriver::formatValue(), QTDSDriver::formatValue(), QMYSQLDriver::formatValue(), QODBCDriver::formatValue(), QPSQLDriver::formatValue(), qCreateParamString(), and sqlStatement().

598 {
599  const QLatin1String nullTxt("NULL");
600 
601  QString r;
602  if (field.isNull())
603  r = nullTxt;
604  else {
605  switch (field.type()) {
606  case QVariant::Int:
607  case QVariant::UInt:
608  if (field.value().type() == QVariant::Bool)
609  r = field.value().toBool() ? QLatin1String("1") : QLatin1String("0");
610  else
611  r = field.value().toString();
612  break;
613 #ifndef QT_NO_DATESTRING
614  case QVariant::Date:
615  if (field.value().toDate().isValid())
616  r = QLatin1Char('\'') + field.value().toDate().toString(Qt::ISODate)
617  + QLatin1Char('\'');
618  else
619  r = nullTxt;
620  break;
621  case QVariant::Time:
622  if (field.value().toTime().isValid())
623  r = QLatin1Char('\'') + field.value().toTime().toString(Qt::ISODate)
624  + QLatin1Char('\'');
625  else
626  r = nullTxt;
627  break;
628  case QVariant::DateTime:
629  if (field.value().toDateTime().isValid())
630  r = QLatin1Char('\'') +
631  field.value().toDateTime().toString(Qt::ISODate) + QLatin1Char('\'');
632  else
633  r = nullTxt;
634  break;
635 #endif
636  case QVariant::String:
637  case QVariant::Char:
638  {
639  QString result = field.value().toString();
640  if (trimStrings) {
641  int end = result.length();
642  while (end && result.at(end-1).isSpace()) /* skip white space from end */
643  end--;
644  result.truncate(end);
645  }
646  /* escape the "'" character */
647  result.replace(QLatin1Char('\''), QLatin1String("''"));
648  r = QLatin1Char('\'') + result + QLatin1Char('\'');
649  break;
650  }
651  case QVariant::Bool:
652  r = QString::number(field.value().toBool());
653  break;
654  case QVariant::ByteArray : {
655  if (hasFeature(BLOB)) {
656  QByteArray ba = field.value().toByteArray();
657  QString res;
658  static const char hexchars[] = "0123456789abcdef";
659  for (int i = 0; i < ba.size(); ++i) {
660  uchar s = (uchar) ba[i];
661  res += QLatin1Char(hexchars[s >> 4]);
662  res += QLatin1Char(hexchars[s & 0x0f]);
663  }
664  r = QLatin1Char('\'') + res + QLatin1Char('\'');
665  break;
666  }
667  }
668  default:
669  r = field.value().toString();
670  break;
671  }
672  }
673  return r;
674 }
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: qstring.cpp:6448
const QChar at(int i) const
Returns the character at the given index position in the string.
Definition: qstring.h:698
bool isValid() const
Returns true if this date is valid; otherwise returns false.
Definition: qdatetime.cpp:340
virtual bool hasFeature(DriverFeature f) const =0
Returns true if the driver supports feature feature; otherwise returns false.
QVariant value() const
Returns the value of the field as a QVariant.
Definition: qsqlfield.h:71
QString & replace(int i, int len, QChar after)
Definition: qstring.cpp:2005
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:135
int length() const
Returns the number of characters in this string.
Definition: qstring.h:696
QString toString() const
Returns the variant as a QString if the variant has type() String , Bool , ByteArray ...
Definition: qvariant.cpp:2270
QDateTime toDateTime() const
Returns the variant as a QDateTime if the variant has type() DateTime , Date , or String ; otherwise ...
Definition: qvariant.cpp:2349
bool isValid() const
Returns true if both the date and the time are valid; otherwise returns false.
Definition: qdatetime.cpp:2346
QLatin1String(DBUS_INTERFACE_DBUS))) Q_GLOBAL_STATIC_WITH_ARGS(QString
bool toBool() const
Returns the variant as a bool if the variant has type() Bool.
Definition: qvariant.cpp:2691
The QString class provides a Unicode character string.
Definition: qstring.h:83
QString toString(Qt::DateFormat f=Qt::TextDate) const
Returns the datetime as a string in the format given.
Definition: qdatetime.cpp:2628
QByteArray toByteArray() const
Returns the variant as a QByteArray if the variant has type() ByteArray or String (converted using QS...
Definition: qvariant.cpp:2383
bool isSpace() const
Returns true if the character is a separator character (Separator_* categories); otherwise returns fa...
Definition: qchar.cpp:609
unsigned char uchar
Definition: qglobal.h:994
void truncate(int pos)
Truncates the string at the given position index.
Definition: qstring.cpp:4603
The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal...
Definition: qstring.h:654
QVariant::Type type() const
Returns the field&#39;s type as stored in the database.
Definition: qsqlfield.cpp:394
QString toString(Qt::DateFormat f=Qt::TextDate) const
Returns the time as a string.
Definition: qdatetime.cpp:1653
QDate toDate() const
Returns the variant as a QDate if the variant has type() Date , DateTime , or String ; otherwise retu...
Definition: qvariant.cpp:2311
Type type() const
Returns the storage type of the value stored in the variant.
Definition: qvariant.cpp:1901
bool isNull() const
Returns true if the field&#39;s value is NULL; otherwise returns false.
Definition: qsqlfield.cpp:428
int size() const
Returns the number of bytes in this byte array.
Definition: qbytearray.h:402
QTime toTime() const
Returns the variant as a QTime if the variant has type() Time , DateTime , or String ; otherwise retu...
Definition: qvariant.cpp:2330
static const KeyPair *const end
QString toString(Qt::DateFormat f=Qt::TextDate) const
Returns the date as a string.
Definition: qdatetime.cpp:823
The QLatin1Char class provides an 8-bit ASCII/Latin-1 character.
Definition: qchar.h:55
bool isValid() const
Returns true if the time is valid; otherwise returns false.
Definition: qdatetime.cpp:1566

◆ handle()

QVariant QSqlDriver::handle ( ) const
virtual

Returns the low-level database handle wrapped in a QVariant or an invalid variant if there is no handle.

Warning
Use this with uttermost care and only if you know what you're doing.
The handle returned here can become a stale pointer if the connection is modified (for example, if you close the connection).
The handle can be NULL if the connection is not open yet.

The handle returned here is database-dependent, you should query the type name of the variant before accessing it.

This example retrieves the handle for a connection to sqlite:

QSqlDatabase db = ...;
QVariant v = db.driver()->handle();
if (v.isValid() && qstrcmp(v.typeName(), "sqlite3*") == 0) {
// v.data() returns a pointer to the handle
sqlite3 *handle = *static_cast<sqlite3 **>(v.data());
if (handle != 0) { // check that it is not NULL
...
}
}

This snippet returns the handle for PostgreSQL or MySQL:

if (qstrcmp(v.typeName(), "PGconn*") == 0) {
PGconn *handle = *static_cast<PGconn **>(v.data());
if (handle != 0) ...
}
if (qstrcmp(v.typeName(), "MYSQL*") == 0) {
MYSQL *handle = *static_cast<MYSQL **>(v.data());
if (handle != 0) ...
}
See also
QSqlResult::handle()

Reimplemented in QPSQLDriver, QODBCDriver, QMYSQLDriver, QSymSQLDriver, QTDSDriver, QOCIDriver, QSQLite2Driver, QIBaseDriver, QSQLiteDriver, and QDB2Driver.

Definition at line 700 of file qsqldriver.cpp.

701 {
702  return QVariant();
703 }
The QVariant class acts like a union for the most common Qt data types.
Definition: qvariant.h:92

◆ hasFeature()

bool QSqlDriver::hasFeature ( DriverFeature  feature) const
pure virtual

Returns true if the driver supports feature feature; otherwise returns false.

Note that some databases need to be open() before this can be determined.

See also
DriverFeature

Implemented in QODBCDriver, QPSQLDriver, QMYSQLDriver, QSymSQLDriver, QTDSDriver, QOCIDriver, QSqlNullDriver, QDB2Driver, QSQLiteDriver, QSQLite2Driver, and QIBaseDriver.

Referenced by QSqlTableModelPrivate::exec(), formatValue(), and QSqlQueryModel::setQuery().

◆ isIdentifierEscaped()

bool QSqlDriver::isIdentifierEscaped ( const QString identifier,
IdentifierType  type 
) const

Returns whether identifier is escaped according to the database rules.

identifier can either be a table name or field name, dependent on type.

Warning
Because of binary compatibility constraints, this function is not virtual. If you want to provide your own implementation in your QSqlDriver subclass, reimplement the isIdentifierEscapedImplementation() slot in your subclass instead. The isIdentifierEscapedFunction() will dynamically detect the slot and call it.
See also
stripDelimiters(), escapeIdentifier()

Definition at line 429 of file qsqldriver.cpp.

Referenced by QOCIDriver::escapeIdentifier(), QSqlTableModelPrivate::nameToIndex(), QRelation::populateDictionary(), prepareIdentifier(), QDB2Driver::primaryIndex(), QIBaseDriver::primaryIndex(), QSQLiteDriver::primaryIndex(), QOCIDriver::primaryIndex(), QSQLite2Driver::primaryIndex(), QTDSDriver::primaryIndex(), QODBCDriver::primaryIndex(), QPSQLDriver::primaryIndex(), qExtractSecurityPolicyFromString(), QDB2Driver::record(), QIBaseDriver::record(), QSQLiteDriver::record(), QOCIDriver::record(), QSQLite2Driver::record(), QTDSDriver::record(), QMYSQLDriver::record(), QODBCDriver::record(), QPSQLDriver::record(), stripDelimitersImplementation(), QDB2Driver::tables(), and QOCIDriver::tables().

430 {
431  bool result;
432  QMetaObject::invokeMethod(const_cast<QSqlDriver*>(this),
433  "isIdentifierEscapedImplementation", Qt::DirectConnection,
434  Q_RETURN_ARG(bool, result),
435  Q_ARG(QString, identifier),
437  return result;
438 }
int type
Definition: qmetatype.cpp:239
#define Q_ARG(type, data)
Definition: qobjectdefs.h:246
The QString class provides a Unicode character string.
Definition: qstring.h:83
#define Q_RETURN_ARG(type, data)
Definition: qobjectdefs.h:247
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(0), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
Invokes the member (a signal or a slot name) on the object obj.
IdentifierType
This enum contains a list of SQL identifier types.
Definition: qsqldriver.h:83

◆ isIdentifierEscapedImplementation

bool QSqlDriver::isIdentifierEscapedImplementation ( const QString identifier,
IdentifierType  type 
) const
protectedslot

This slot returns whether identifier is escaped according to the database rules.

Since
4.6

identifier can either be a table name or field name, dependent on type.

Because of binary compatibility constraints, isIdentifierEscaped() function (introduced in Qt 4.5) is not virtual. Instead, isIdentifierEscaped() will dynamically detect and call this slot. The default implementation assumes the escape/delimiter character is a double quote. Reimplement this slot in your own QSqlDriver if your database engine uses a different delimiter character.

See also
isIdentifierEscaped()

Definition at line 918 of file qsqldriver.cpp.

919 {
920  Q_UNUSED(type);
921  return identifier.size() > 2
922  && identifier.startsWith(QLatin1Char('"')) //left delimited
923  && identifier.endsWith(QLatin1Char('"')); //right delimited
924 }
int type
Definition: qmetatype.cpp:239
bool startsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string starts with s; otherwise returns false.
Definition: qstring.cpp:3734
int size() const
Returns the number of characters in this string.
Definition: qstring.h:102
bool endsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string ends with s; otherwise returns false.
Definition: qstring.cpp:3796
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729
The QLatin1Char class provides an 8-bit ASCII/Latin-1 character.
Definition: qchar.h:55

◆ isOpen()

bool QSqlDriver::isOpen ( ) const
virtual

Returns true if the database connection is open; otherwise returns false.

Reimplemented in QPSQLDriver.

Definition at line 182 of file qsqldriver.cpp.

Referenced by QDB2Driver::beginTransaction(), QIBaseDriver::beginTransaction(), QSQLiteDriver::beginTransaction(), QSQLite2Driver::beginTransaction(), QOCIDriver::beginTransaction(), QMYSQLDriver::beginTransaction(), QODBCDriver::beginTransaction(), QODBCDriver::cleanup(), QDB2Driver::close(), QIBaseDriver::close(), QSQLiteDriver::close(), QSQLite2Driver::close(), QOCIDriver::close(), QTDSDriver::close(), QMYSQLDriver::close(), QDB2Driver::commitTransaction(), QIBaseDriver::commitTransaction(), QSQLiteDriver::commitTransaction(), QSQLite2Driver::commitTransaction(), QOCIDriver::commitTransaction(), QMYSQLDriver::commitTransaction(), QODBCDriver::commitTransaction(), QMYSQLDriver::formatValue(), QIBaseDriver::open(), QSQLite2Driver::open(), QSQLiteDriver::open(), QOCIDriver::open(), QTDSDriver::open(), QDB2Driver::open(), QMYSQLDriver::open(), QODBCDriver::open(), QDB2Driver::primaryIndex(), QIBaseDriver::primaryIndex(), QSQLiteDriver::primaryIndex(), QOCIDriver::primaryIndex(), QSQLite2Driver::primaryIndex(), QTDSDriver::primaryIndex(), QMYSQLDriver::primaryIndex(), QODBCDriver::primaryIndex(), qExtractSecurityPolicyFromString(), QDB2Driver::record(), QIBaseDriver::record(), QSQLiteDriver::record(), QOCIDriver::record(), QSQLite2Driver::record(), QTDSDriver::record(), QMYSQLDriver::record(), QODBCDriver::record(), QDB2Driver::rollbackTransaction(), QIBaseDriver::rollbackTransaction(), QSQLiteDriver::rollbackTransaction(), QSQLite2Driver::rollbackTransaction(), QOCIDriver::rollbackTransaction(), QMYSQLDriver::rollbackTransaction(), QODBCDriver::rollbackTransaction(), QIBaseDriver::subscribeToNotificationImplementation(), QDB2Driver::tables(), QIBaseDriver::tables(), QSQLiteDriver::tables(), QOCIDriver::tables(), QSQLite2Driver::tables(), QTDSDriver::tables(), QMYSQLDriver::tables(), QODBCDriver::tables(), QIBaseDriver::unsubscribeFromNotificationImplementation(), QOCIDriver::~QOCIDriver(), and QODBCResult::~QODBCResult().

183 {
184  return d_func()->isOpen;
185 }

◆ isOpenError()

bool QSqlDriver::isOpenError ( ) const

◆ lastError()

QSqlError QSqlDriver::lastError ( ) const

Returns a QSqlError object which contains information about the last error that occurred on the database.

Definition at line 360 of file qsqldriver.cpp.

361 {
362  return d_func()->error;
363 }

◆ notification

QSqlDriver::notification ( const QString name)
signal

This signal is emitted when the database posts an event notification that the driver subscribes to.

Since
4.4

name identifies the event notification.

See also
subscribeToNotification()

Referenced by QPSQLDriver::_q_handleNotification(), and QIBaseDriver::qHandleEventNotification().

◆ numericalPrecisionPolicy()

QSql::NumericalPrecisionPolicy QSqlDriver::numericalPrecisionPolicy ( ) const

Returns the current default precision policy for the database connection.

Since
4.6
See also
QSql::NumericalPrecisionPolicy, setNumericalPrecisionPolicy(), QSqlQuery::numericalPrecisionPolicy(), QSqlQuery::setNumericalPrecisionPolicy()

Definition at line 987 of file qsqldriver.cpp.

Referenced by QSqlResult::QSqlResult().

988 {
989  return d_func()->precisionPolicy;
990 }

◆ open()

bool QSqlDriver::open ( const QString db,
const QString user = QString(),
const QString password = QString(),
const QString host = QString(),
int  port = -1,
const QString options = QString() 
)
pure virtual

Derived classes must reimplement this pure virtual function to open a database connection on database db, using user name user, password password, host host, port port and connection options options.

The function must return true on success and false on failure.

See also
setOpen()

Implemented in QODBCDriver, QPSQLDriver, QMYSQLDriver, QDB2Driver, QSymSQLDriver, QTDSDriver, QOCIDriver, QSqlNullDriver, QSQLiteDriver, QSQLite2Driver, and QIBaseDriver.

Referenced by setOpen().

◆ primaryIndex()

QSqlIndex QSqlDriver::primaryIndex ( const QString tableName) const
virtual

Returns the primary index for table tableName.

Returns an empty QSqlIndex if the table doesn't have a primary index. The default implementation returns an empty index.

Reimplemented in QPSQLDriver, QODBCDriver, QMYSQLDriver, QSymSQLDriver, QTDSDriver, QSQLite2Driver, QOCIDriver, QSQLiteDriver, QIBaseDriver, and QDB2Driver.

Definition at line 387 of file qsqldriver.cpp.

388 {
389  return QSqlIndex();
390 }
The QSqlIndex class provides functions to manipulate and describe database indexes.
Definition: qsqlindex.h:55

◆ record()

QSqlRecord QSqlDriver::record ( const QString tableName) const
virtual

Returns a QSqlRecord populated with the names of the fields in table tableName.

Use query.

If no such table exists, an empty record is returned. The default implementation returns an empty record.

record() instead.

Reimplemented in QPSQLDriver, QODBCDriver, QMYSQLDriver, QSymSQLDriver, QTDSDriver, QSQLite2Driver, QOCIDriver, QSQLiteDriver, QIBaseDriver, and QDB2Driver.

Definition at line 399 of file qsqldriver.cpp.

400 {
401  return QSqlRecord();
402 }
The QSqlRecord class encapsulates a database record.
Definition: qsqlrecord.h:58

◆ rollbackTransaction()

bool QSqlDriver::rollbackTransaction ( )
virtual

This function is called to rollback a transaction.

If successful, return true, otherwise return false. The default implementation does nothing and returns false.

See also
beginTransaction(), commitTransaction()

Reimplemented in QODBCDriver, QPSQLDriver, QMYSQLDriver, QTDSDriver, QOCIDriver, QSymSQLDriver, QSQLite2Driver, QSQLiteDriver, QIBaseDriver, and QDB2Driver.

Definition at line 338 of file qsqldriver.cpp.

339 {
340  return false;
341 }

◆ setLastError()

void QSqlDriver::setLastError ( const QSqlError error)
protectedvirtual

This function is used to set the value of the last error, error, that occurred on the database.

See also
lastError()

Reimplemented in QSqlNullDriver.

Definition at line 350 of file qsqldriver.cpp.

Referenced by QSQLiteDriver::beginTransaction(), QSQLite2Driver::beginTransaction(), QOCIDriver::beginTransaction(), QMYSQLDriver::beginTransaction(), QPSQLDriver::beginTransaction(), QODBCDriver::beginTransaction(), QSQLiteDriver::close(), QDB2Driver::commitTransaction(), QSQLiteDriver::commitTransaction(), QSQLite2Driver::commitTransaction(), QOCIDriver::commitTransaction(), QMYSQLDriver::commitTransaction(), QPSQLDriver::commitTransaction(), QODBCDriver::commitTransaction(), QODBCDriver::endTrans(), QSQLite2Driver::open(), QSQLiteDriver::open(), QOCIDriver::open(), QTDSDriver::open(), QDB2Driver::open(), QMYSQLDriver::open(), QPSQLDriver::open(), QODBCDriver::open(), QPSQLResultPrivate::processResults(), qExtractSecurityPolicyFromString(), QOCIDriver::QOCIDriver(), QSqlNullDriver::QSqlNullDriver(), QDB2Driver::rollbackTransaction(), QSQLiteDriver::rollbackTransaction(), QSQLite2Driver::rollbackTransaction(), QOCIDriver::rollbackTransaction(), QMYSQLDriver::rollbackTransaction(), QPSQLDriver::rollbackTransaction(), QODBCDriver::rollbackTransaction(), QDB2Driver::setAutoCommit(), QIBaseDriver::subscribeToNotificationImplementation(), QPSQLDriver::subscribeToNotificationImplementation(), QIBaseDriver::unsubscribeFromNotificationImplementation(), and QPSQLDriver::unsubscribeFromNotificationImplementation().

351 {
352  d_func()->error = error;
353 }
#define error(msg)

◆ setNumericalPrecisionPolicy()

void QSqlDriver::setNumericalPrecisionPolicy ( QSql::NumericalPrecisionPolicy  precisionPolicy)

Sets the default numerical precision policy used by queries created by this driver to precisionPolicy.

Since
4.6

Note: Setting the default precision policy to precisionPolicy doesn't affect any currently active queries.

See also
QSql::NumericalPrecisionPolicy, numericalPrecisionPolicy(), QSqlQuery::setNumericalPrecisionPolicy(), QSqlQuery::numericalPrecisionPolicy()

Definition at line 971 of file qsqldriver.cpp.

972 {
973  d_func()->precisionPolicy = precisionPolicy;
974 }

◆ setOpen()

void QSqlDriver::setOpen ( bool  open)
protectedvirtual

This function sets the open state of the database to open.

Derived classes can use this function to report the status of open().

See also
open(), setOpenError()

Reimplemented in QSqlNullDriver.

Definition at line 283 of file qsqldriver.cpp.

Referenced by QDB2Driver::close(), QIBaseDriver::close(), QSQLiteDriver::close(), QSQLite2Driver::close(), QOCIDriver::close(), QTDSDriver::close(), QMYSQLDriver::close(), QODBCDriver::close(), QPSQLDriver::close(), QIBaseDriver::open(), QSQLite2Driver::open(), QSQLiteDriver::open(), QOCIDriver::open(), QTDSDriver::open(), QDB2Driver::open(), QMYSQLDriver::open(), QPSQLDriver::open(), QODBCDriver::open(), QDB2Driver::QDB2Driver(), qExtractSecurityPolicyFromString(), QIBaseDriver::QIBaseDriver(), QMYSQLDriver::QMYSQLDriver(), QOCIDriver::QOCIDriver(), QODBCDriver::QODBCDriver(), QPSQLDriver::QPSQLDriver(), QSQLite2Driver::QSQLite2Driver(), QSQLiteDriver::QSQLiteDriver(), QSymSQLDriver::QSymSQLDriver(), and QTDSDriver::QTDSDriver().

284 {
285  d_func()->isOpen = open;
286 }
virtual bool open(const QString &db, const QString &user=QString(), const QString &password=QString(), const QString &host=QString(), int port=-1, const QString &connOpts=QString())=0
Derived classes must reimplement this pure virtual function to open a database connection on database...

◆ setOpenError()

void QSqlDriver::setOpenError ( bool  error)
protectedvirtual

◆ sqlStatement()

QString QSqlDriver::sqlStatement ( StatementType  type,
const QString tableName,
const QSqlRecord rec,
bool  preparedStatement 
) const
virtual

Returns a SQL statement of type type for the table tableName with the values from rec.

If preparedStatement is true, the string will contain placeholders instead of values.

This method can be used to manipulate tables without having to worry about database-dependent SQL dialects. For non-prepared statements, the values will be properly escaped.

Definition at line 475 of file qsqldriver.cpp.

477 {
478  int i;
479  QString s;
480  s.reserve(128);
481  switch (type) {
482  case SelectStatement:
483  for (i = 0; i < rec.count(); ++i) {
484  if (rec.isGenerated(i))
486  }
487  if (s.isEmpty())
488  return s;
489  s.chop(2);
490  s.prepend(QLatin1String("SELECT ")).append(QLatin1String(" FROM ")).append(tableName);
491  break;
492  case WhereStatement:
493  if (preparedStatement) {
494  for (int i = 0; i < rec.count(); ++i) {
495  s.append(prepareIdentifier(rec.fieldName(i), FieldName,this));
496  if (rec.isNull(i))
497  s.append(QLatin1String(" IS NULL"));
498  else
499  s.append(QLatin1String(" = ?"));
500  s.append(QLatin1String(" AND "));
501  }
502  } else {
503  for (i = 0; i < rec.count(); ++i) {
505  QString val = formatValue(rec.field(i));
506  if (val == QLatin1String("NULL"))
507  s.append(QLatin1String(" IS NULL"));
508  else
509  s.append(QLatin1String(" = ")).append(val);
510  s.append(QLatin1String(" AND "));
511  }
512  }
513  if (!s.isEmpty()) {
514  s.prepend(QLatin1String("WHERE "));
515  s.chop(5); // remove tailing AND
516  }
517  break;
518  case UpdateStatement:
519  s.append(QLatin1String("UPDATE ")).append(tableName).append(
520  QLatin1String(" SET "));
521  for (i = 0; i < rec.count(); ++i) {
522  if (!rec.isGenerated(i))
523  continue;
525  if (preparedStatement)
526  s.append(QLatin1Char('?'));
527  else
528  s.append(formatValue(rec.field(i)));
529  s.append(QLatin1String(", "));
530  }
531  if (s.endsWith(QLatin1String(", ")))
532  s.chop(2);
533  else
534  s.clear();
535  break;
536  case DeleteStatement:
537  s.append(QLatin1String("DELETE FROM ")).append(tableName);
538  break;
539  case InsertStatement: {
540  s.append(QLatin1String("INSERT INTO ")).append(tableName).append(QLatin1String(" ("));
541  QString vals;
542  for (i = 0; i < rec.count(); ++i) {
543  if (!rec.isGenerated(i))
544  continue;
546  if (preparedStatement)
547  vals.append(QLatin1Char('?'));
548  else
549  vals.append(formatValue(rec.field(i)));
550  vals.append(QLatin1String(", "));
551  }
552  if (vals.isEmpty()) {
553  s.clear();
554  } else {
555  vals.chop(2); // remove trailing comma
556  s[s.length() - 2] = QLatin1Char(')');
557  s.append(QLatin1String("VALUES (")).append(vals).append(QLatin1Char(')'));
558  }
559  break; }
560  }
561  return s;
562 }
int type
Definition: qmetatype.cpp:239
void chop(int n)
Removes n characters from the end of the string.
Definition: qstring.cpp:4623
int length() const
Returns the number of characters in this string.
Definition: qstring.h:696
QString & prepend(QChar c)
Definition: qstring.h:261
QLatin1String(DBUS_INTERFACE_DBUS))) Q_GLOBAL_STATIC_WITH_ARGS(QString
bool isNull(int i) const
Returns true if the field index is null or if there is no field at position index; otherwise returns ...
Definition: qsqlrecord.cpp:453
The QString class provides a Unicode character string.
Definition: qstring.h:83
bool isGenerated(int i) const
Returns true if the record has a field at position index and this field is to be generated (the defau...
Definition: qsqlrecord.cpp:519
void reserve(int size)
Attempts to allocate memory for at least size characters.
Definition: qstring.h:881
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
Definition: qstring.h:704
static QString prepareIdentifier(const QString &identifier, QSqlDriver::IdentifierType type, const QSqlDriver *driver)
Definition: qsqldriver.cpp:52
The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal...
Definition: qstring.h:654
QSqlField field(int i) const
Returns the field at position index.
Definition: qsqlrecord.cpp:289
int count() const
Returns the number of fields in the record.
Definition: qsqlrecord.cpp:573
QString & append(QChar c)
Definition: qstring.cpp:1777
void clear()
Clears the contents of the string and makes it empty.
Definition: qstring.h:723
virtual QString formatValue(const QSqlField &field, bool trimStrings=false) const
Returns a string representation of the field value for the database.
Definition: qsqldriver.cpp:597
bool endsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string ends with s; otherwise returns false.
Definition: qstring.cpp:3796
QString fieldName(int i) const
Returns the name of the field at position index.
Definition: qsqlrecord.cpp:232
The QLatin1Char class provides an 8-bit ASCII/Latin-1 character.
Definition: qchar.h:55

◆ stripDelimiters()

QString QSqlDriver::stripDelimiters ( const QString identifier,
IdentifierType  type 
) const

Returns the identifier with the leading and trailing delimiters removed, identifier can either be a table name or field name, dependent on type.

If identifier does not have leading and trailing delimiter characters, identifier is returned without modification.

Warning
Because of binary compatibility constraints, this function is not virtual, If you want to provide your own implementation in your QSqlDriver subclass, reimplement the stripDelimitersImplementation() slot in your subclass instead. The stripDelimiters() function will dynamically detect the slot and call it.
Since
4.5
See also
isIdentifierEscaped()

Definition at line 455 of file qsqldriver.cpp.

Referenced by QSqlTableModelPrivate::nameToIndex(), QRelation::populateDictionary(), QDB2Driver::primaryIndex(), QIBaseDriver::primaryIndex(), QSQLiteDriver::primaryIndex(), QOCIDriver::primaryIndex(), QSQLite2Driver::primaryIndex(), QTDSDriver::primaryIndex(), QODBCDriver::primaryIndex(), QPSQLDriver::primaryIndex(), qExtractSecurityPolicyFromString(), QDB2Driver::record(), QIBaseDriver::record(), QSQLiteDriver::record(), QOCIDriver::record(), QSQLite2Driver::record(), QTDSDriver::record(), QMYSQLDriver::record(), QODBCDriver::record(), QPSQLDriver::record(), QDB2Driver::tables(), and QOCIDriver::tables().

456 {
457  QString result;
458  QMetaObject::invokeMethod(const_cast<QSqlDriver*>(this),
459  "stripDelimitersImplementation", Qt::DirectConnection,
460  Q_RETURN_ARG(QString, result),
461  Q_ARG(QString, identifier),
463  return result;
464 }
int type
Definition: qmetatype.cpp:239
#define Q_ARG(type, data)
Definition: qobjectdefs.h:246
The QString class provides a Unicode character string.
Definition: qstring.h:83
#define Q_RETURN_ARG(type, data)
Definition: qobjectdefs.h:247
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(0), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
Invokes the member (a signal or a slot name) on the object obj.
IdentifierType
This enum contains a list of SQL identifier types.
Definition: qsqldriver.h:83

◆ stripDelimitersImplementation

QString QSqlDriver::stripDelimitersImplementation ( const QString identifier,
IdentifierType  type 
) const
protectedslot

This slot returns identifier with the leading and trailing delimiters removed, identifier can either be a tablename or field name, dependent on type.

Since
4.6

If identifier does not have leading and trailing delimiter characters, identifier is returned without modification.

Because of binary compatibility constraints, the stripDelimiters() function (introduced in Qt 4.5) is not virtual. Instead, stripDelimiters() will dynamically detect and call this slot. It generally unnecessary to reimplement this slot.

See also
stripDelimiters()

Definition at line 944 of file qsqldriver.cpp.

945 {
946  QString ret;
947  if (this->isIdentifierEscaped(identifier, type)) {
948  ret = identifier.mid(1);
949  ret.chop(1);
950  } else {
951  ret = identifier;
952  }
953  return ret;
954 }
int type
Definition: qmetatype.cpp:239
void chop(int n)
Removes n characters from the end of the string.
Definition: qstring.cpp:4623
The QString class provides a Unicode character string.
Definition: qstring.h:83
bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const
Returns whether identifier is escaped according to the database rules.
Definition: qsqldriver.cpp:429
QString mid(int position, int n=-1) const Q_REQUIRED_RESULT
Returns a string that contains n characters of this string, starting at the specified position index...
Definition: qstring.cpp:3706

◆ subscribedToNotifications()

QStringList QSqlDriver::subscribedToNotifications ( ) const

Returns a list of the names of the event notifications that are currently subscribed to.

Warning
Because of binary compatibility constraints, this function is not virtual. If you want to provide event notification support in your own QSqlDriver subclass, reimplement the subscribedToNotificationsImplementation() slot in your subclass instead. The subscribedToNotifications() function will dynamically detect the slot and call it.
Since
4.4
See also
subscribeToNotification() unsubscribeFromNotification()

Definition at line 817 of file qsqldriver.cpp.

818 {
819  QStringList result;
820  QMetaObject::invokeMethod(const_cast<QSqlDriver *>(this),
821  "subscribedToNotificationsImplementation", Qt::DirectConnection,
822  Q_RETURN_ARG(QStringList, result));
823  return result;
824 }
The QStringList class provides a list of strings.
Definition: qstringlist.h:66
#define Q_RETURN_ARG(type, data)
Definition: qobjectdefs.h:247
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(0), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
Invokes the member (a signal or a slot name) on the object obj.

◆ subscribedToNotificationsImplementation

QStringList QSqlDriver::subscribedToNotificationsImplementation ( ) const
protectedslot

Returns a list of the names of the event notifications that are currently subscribed to.

Reimplement this slot to provide your own QSqlDriver subclass with event notification support; because of binary compatibility constraints, the subscribedToNotifications() function (introduced in Qt 4.4) is not virtual. Instead, subscribedToNotifications() will dynamically detect and call this slot. The default implementation simply returns an empty QStringList.

Since
4.4
See also
subscribedToNotifications()

Definition at line 894 of file qsqldriver.cpp.

895 {
896  return QStringList();
897 }
The QStringList class provides a list of strings.
Definition: qstringlist.h:66

◆ subscribeToNotification()

bool QSqlDriver::subscribeToNotification ( const QString name)

This function is called to subscribe to event notifications from the database.

name identifies the event notification.

If successful, return true, otherwise return false.

The database must be open when this function is called. When the database is closed by calling close() all subscribed event notifications are automatically unsubscribed. Note that calling open() on an already open database may implicitly cause close() to be called, which will cause the driver to unsubscribe from all event notifications.

When an event notification identified by name is posted by the database the notification() signal is emitted.

Warning
Because of binary compatibility constraints, this function is not virtual. If you want to provide event notification support in your own QSqlDriver subclass, reimplement the subscribeToNotificationImplementation() slot in your subclass instead. The subscribeToNotification() function will dynamically detect the slot and call it.
Since
4.4
See also
unsubscribeFromNotification() subscribedToNotifications() QSqlDriver::hasFeature()

Definition at line 766 of file qsqldriver.cpp.

767 {
768  bool result;
769  QMetaObject::invokeMethod(const_cast<QSqlDriver *>(this),
770  "subscribeToNotificationImplementation", Qt::DirectConnection,
771  Q_RETURN_ARG(bool, result),
772  Q_ARG(QString, name));
773  return result;
774 }
#define Q_ARG(type, data)
Definition: qobjectdefs.h:246
The QString class provides a Unicode character string.
Definition: qstring.h:83
#define Q_RETURN_ARG(type, data)
Definition: qobjectdefs.h:247
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(0), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
Invokes the member (a signal or a slot name) on the object obj.

◆ subscribeToNotificationImplementation

bool QSqlDriver::subscribeToNotificationImplementation ( const QString name)
protectedslot

This slot is called to subscribe to event notifications from the database.

name identifies the event notification.

If successful, return true, otherwise return false.

The database must be open when this slot is called. When the database is closed by calling close() all subscribed event notifications are automatically unsubscribed. Note that calling open() on an already open database may implicitly cause close() to be called, which will cause the driver to unsubscribe from all event notifications.

When an event notification identified by name is posted by the database the notification() signal is emitted.

Reimplement this slot to provide your own QSqlDriver subclass with event notification support; because of binary compatibility constraints, the subscribeToNotification() function (introduced in Qt 4.4) is not virtual. Instead, subscribeToNotification() will dynamically detect and call this slot. The default implementation does nothing and returns false.

Since
4.4
See also
subscribeToNotification()

Definition at line 849 of file qsqldriver.cpp.

850 {
851  Q_UNUSED(name);
852  return false;
853 }
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729

◆ tables()

QStringList QSqlDriver::tables ( QSql::TableType  tableType) const
virtual

Returns a list of the names of the tables in the database.

The default implementation returns an empty list.

The tableType argument describes what types of tables should be returned. Due to binary compatibility, the string contains the value of the enum QSql::TableTypes as text. An empty string should be treated as QSql::Tables for backward compatibility.

Reimplemented in QPSQLDriver, QODBCDriver, QMYSQLDriver, QSymSQLDriver, QTDSDriver, QSQLite2Driver, QOCIDriver, QSQLiteDriver, QIBaseDriver, and QDB2Driver.

Definition at line 376 of file qsqldriver.cpp.

377 {
378  return QStringList();
379 }
The QStringList class provides a list of strings.
Definition: qstringlist.h:66

◆ unsubscribeFromNotification()

bool QSqlDriver::unsubscribeFromNotification ( const QString name)

This function is called to unsubscribe from event notifications from the database.

name identifies the event notification.

If successful, return true, otherwise return false.

The database must be open when this function is called. All subscribed event notifications are automatically unsubscribed from when the close() function is called.

After calling this function the notification() signal will no longer be emitted when an event notification identified by name is posted by the database.

Warning
Because of binary compatibility constraints, this function is not virtual. If you want to provide event notification support in your own QSqlDriver subclass, reimplement the unsubscribeFromNotificationImplementation() slot in your subclass instead. The unsubscribeFromNotification() function will dynamically detect the slot and call it.
Since
4.4
See also
subscribeToNotification() subscribedToNotifications()

Definition at line 796 of file qsqldriver.cpp.

797 {
798  bool result;
799  QMetaObject::invokeMethod(const_cast<QSqlDriver *>(this),
800  "unsubscribeFromNotificationImplementation", Qt::DirectConnection,
801  Q_RETURN_ARG(bool, result),
802  Q_ARG(QString, name));
803  return result;
804 }
#define Q_ARG(type, data)
Definition: qobjectdefs.h:246
The QString class provides a Unicode character string.
Definition: qstring.h:83
#define Q_RETURN_ARG(type, data)
Definition: qobjectdefs.h:247
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(0), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
Invokes the member (a signal or a slot name) on the object obj.

◆ unsubscribeFromNotificationImplementation

bool QSqlDriver::unsubscribeFromNotificationImplementation ( const QString name)
protectedslot

This slot is called to unsubscribe from event notifications from the database.

name identifies the event notification.

If successful, return true, otherwise return false.

The database must be open when this slot is called. All subscribed event notifications are automatically unsubscribed from when the close() function is called.

After calling this slot the notification() signal will no longer be emitted when an event notification identified by name is posted by the database.

Reimplement this slot to provide your own QSqlDriver subclass with event notification support; because of binary compatibility constraints, the unsubscribeFromNotification() function (introduced in Qt 4.4) is not virtual. Instead, unsubscribeFromNotification() will dynamically detect and call this slot. The default implementation does nothing and returns false.

Since
4.4
See also
unsubscribeFromNotification()

Definition at line 876 of file qsqldriver.cpp.

877 {
878  Q_UNUSED(name);
879  return false;
880 }
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729

Friends and Related Functions

◆ QSqlDatabase

friend class QSqlDatabase
friend

Definition at line 70 of file qsqldriver.h.


The documentation for this class was generated from the following files: