diff options
Diffstat (limited to 'src/sql')
-rw-r--r-- | src/sql/CMakeLists.txt | 57 | ||||
-rw-r--r-- | src/sql/configure.cmake | 21 | ||||
-rw-r--r-- | src/sql/doc/snippets/code/doc_src_sql-driver.cpp | 2 | ||||
-rw-r--r-- | src/sql/doc/snippets/code/doc_src_sql-driver.qdoc | 23 | ||||
-rw-r--r-- | src/sql/doc/src/qsqldatatype-table.qdoc | 63 | ||||
-rw-r--r-- | src/sql/doc/src/sql-driver.qdoc | 52 | ||||
-rw-r--r-- | src/sql/kernel/qsqlcachedresult.cpp | 8 | ||||
-rw-r--r-- | src/sql/kernel/qsqlcachedresult_p.h | 9 | ||||
-rw-r--r-- | src/sql/kernel/qsqldatabase.cpp | 17 | ||||
-rw-r--r-- | src/sql/kernel/qsqldriver.cpp | 19 | ||||
-rw-r--r-- | src/sql/kernel/qsqldriver.h | 16 | ||||
-rw-r--r-- | src/sql/kernel/qsqlindex.cpp | 3 | ||||
-rw-r--r-- | src/sql/kernel/qsqlquery.cpp | 6 | ||||
-rw-r--r-- | src/sql/kernel/qsqlquery.h | 4 | ||||
-rw-r--r-- | src/sql/kernel/qsqlresult_p.h | 25 | ||||
-rw-r--r-- | src/sql/models/qsqlrelationaltablemodel.cpp | 6 | ||||
-rw-r--r-- | src/sql/models/qsqlrelationaltablemodel.h | 2 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel.cpp | 4 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel.h | 4 |
19 files changed, 121 insertions, 220 deletions
diff --git a/src/sql/CMakeLists.txt b/src/sql/CMakeLists.txt new file mode 100644 index 0000000000..1bf3a3df2a --- /dev/null +++ b/src/sql/CMakeLists.txt @@ -0,0 +1,57 @@ +# Generated from sql.pro. + +##################################################################### +## Sql Module: +##################################################################### + +qt_add_module(Sql + PLUGIN_TYPES sqldrivers + SOURCES + kernel/qsqlcachedresult.cpp kernel/qsqlcachedresult_p.h + kernel/qsqldatabase.cpp kernel/qsqldatabase.h + kernel/qsqldriver.cpp kernel/qsqldriver.h kernel/qsqldriver_p.h + kernel/qsqldriverplugin.cpp kernel/qsqldriverplugin.h + kernel/qsqlerror.cpp kernel/qsqlerror.h + kernel/qsqlfield.cpp kernel/qsqlfield.h + kernel/qsqlindex.cpp kernel/qsqlindex.h + kernel/qsqlnulldriver_p.h + kernel/qsqlquery.cpp kernel/qsqlquery.h + kernel/qsqlrecord.cpp kernel/qsqlrecord.h + kernel/qsqlresult.cpp kernel/qsqlresult.h kernel/qsqlresult_p.h + kernel/qtsqlglobal.h kernel/qtsqlglobal_p.h + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + QT_NO_USING_NAMESPACE + LIBRARIES + Qt::CorePrivate + PUBLIC_LIBRARIES + Qt::Core + PRIVATE_MODULE_INTERFACE + Qt::CorePrivate + PRECOMPILED_HEADER + "../corelib/global/qt_pch.h" +) + +#### Keys ignored in scope 1:.:.:sql.pro:<TRUE>: +# SQL_P = "sql" + +## Scopes: +##################################################################### + +qt_extend_target(Sql CONDITION MSVC AND (TEST_architecture_arch STREQUAL "i386") + LINK_OPTIONS + "/BASE:0x62000000" +) + +qt_extend_target(Sql CONDITION QT_FEATURE_sqlmodel + SOURCES + models/qsqlquerymodel.cpp models/qsqlquerymodel.h models/qsqlquerymodel_p.h + models/qsqlrelationaldelegate.cpp models/qsqlrelationaldelegate.h + models/qsqlrelationaltablemodel.cpp models/qsqlrelationaltablemodel.h + models/qsqltablemodel.cpp models/qsqltablemodel.h models/qsqltablemodel_p.h +) +qt_add_docs(Sql + doc/qtsql.qdocconf +) + diff --git a/src/sql/configure.cmake b/src/sql/configure.cmake new file mode 100644 index 0000000000..545b542d6b --- /dev/null +++ b/src/sql/configure.cmake @@ -0,0 +1,21 @@ + + +#### Inputs + + + +#### Libraries + + + +#### Tests + + + +#### Features + +qt_feature("sqlmodel" PUBLIC + LABEL "SQL item models" + PURPOSE "Provides item model classes backed by SQL databases." + CONDITION QT_FEATURE_itemmodel +) diff --git a/src/sql/doc/snippets/code/doc_src_sql-driver.cpp b/src/sql/doc/snippets/code/doc_src_sql-driver.cpp index 54576733bf..3757ba2eff 100644 --- a/src/sql/doc/snippets/code/doc_src_sql-driver.cpp +++ b/src/sql/doc/snippets/code/doc_src_sql-driver.cpp @@ -130,7 +130,7 @@ while (query1.next()) { //! [39] -QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3"); +QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); QString connectString = QStringLiteral( "DRIVER=/path/to/installation/libodbcHDB.so;" "SERVERNODE=hostname:port;" diff --git a/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc b/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc index b869b309b7..df4aa0fb34 100644 --- a/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc +++ b/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc @@ -54,7 +54,7 @@ Database options: -sql-<driver> ........ Enable SQL <driver> plugin. Supported drivers: - db2 ibase mysql oci odbc psql sqlite2 sqlite tds + db2 ibase mysql oci odbc psql sqlite [all auto] -sqlite .............. Select used sqlite3 [system/qt] @@ -146,21 +146,6 @@ nmake install //! [15] -//! [16] -cd $QTDIR/qtbase/src/plugins/sqldrivers -qmake -- TDS_PREFIX=$SYBASE -make sub-tds -//! [16] - - -//! [17] -cd %QTDIR%\qtbase\src\plugins\sqldrivers -qmake -nmake sub-tds -nmake install -//! [17] - - //! [18] cd $QTDIR/qtbase/src/plugins/sqldrivers qmake -- DB2_PREFIX=$DB2DIR @@ -235,7 +220,7 @@ make sub-oci //! [35] QSqlDatabase: QPSQL driver not loaded -QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QMARIADB QODBC QODBC3 QPSQL QPSQL7 +QSqlDatabase: available drivers: QSQLITE QMYSQL QMARIADB QODBC QPSQL Could not create database object //! [35] @@ -271,8 +256,6 @@ Checking for MySQL... yes Checking for OCI (Oracle)... no Checking for ODBC... yes Checking for PostgreSQL... no -Checking for SQLite (version 2)... no -Checking for TDS (Sybase)... no Done running configuration tests. Configure summary: @@ -284,10 +267,8 @@ Qt Sql Drivers: OCI (Oracle) ........................... no ODBC ................................... yes PostgreSQL ............................. no - SQLite2 ................................ no SQLite ................................. yes Using system provided SQLite ......... no - TDS (Sybase) ........................... no Qt is now configured for building. Just run 'mingw32-make'. Once everything is built, you must run 'mingw32-make install'. diff --git a/src/sql/doc/src/qsqldatatype-table.qdoc b/src/sql/doc/src/qsqldatatype-table.qdoc index aafbed6096..1c5ab741c9 100644 --- a/src/sql/doc/src/qsqldatatype-table.qdoc +++ b/src/sql/doc/src/qsqldatatype-table.qdoc @@ -502,67 +502,4 @@ \li The value is a BLOB of data, stored exactly as it was input. \li Mapped to QByteArray \endtable - - \section2 Sybase Adaptive Server Data Types - - \table 90% - \header - \li Sybase Adaptive Server data type - \li SQL type description - \li Recommended input (C++ or Qt data type) - \row - \li BINARY - \li Describes a fixed-length binary value up to 255 bytes in size. - \li Mapped to QByteArray - \row - \li CHAR - \li Character String - \li Mapped to QString - \row - \li DATETIME - \li Date and time. Range: 1753-01-01 00:00:00 through 9999-12-31 23:59:59. - \li Mapped to QDateTime - \row - \li NCHAR - \li Character String of fixed length - \li Mapped to QString - \row - \li NVARACHAR - \li Character String of variable length - \li Mapped to QString - \row - \li VARCHAR - \li Character String of fixed length - \li Mapped to QString - \row - \li CLOB - \li Character large string object - \li Mapped to QString - \row - \li TIMESTAMP - \li A unique number within a database - \li Mapped to QString - \row - \li SMALLDATETIME - \li Date and time. Range: 1900-01-01 00:00 through 2079-12-31 23:59 - \li Mapped to QDateTime - \row - \li UNICHAR - \li Character String of fixed length.(Unicode) - \li Mapped to QString - \row - \li UNIVARCHAR - \li Character String of variable length.(Unicode) - \li Mapped to QString - \row - \li VARBINARY - \li Describes a variable-length binary value up to 255 bytes in size - \li Mapped to QByteArray - \endtable - - \section2 SQLite Version 2 - - SQLite version 2 is "typeless". This means that you can store any kind of - data you want in any column of any table, regardless of the declared - data type of that column. We recommend that you map the data to QString. */ diff --git a/src/sql/doc/src/sql-driver.qdoc b/src/sql/doc/src/sql-driver.qdoc index e77cc772e6..95fa8355c7 100644 --- a/src/sql/doc/src/sql-driver.qdoc +++ b/src/sql/doc/src/sql-driver.qdoc @@ -54,9 +54,7 @@ \li Open Database Connectivity (ODBC) - Microsoft SQL Server and other ODBC-compliant databases \row \li \l{#QPSQL}{QPSQL} \li PostgreSQL (versions 7.3 and above) - \row \li \l{#QSQLITE2}{QSQLITE2} \li SQLite version 2 \note obsolete since Qt 5.14 \row \li \l{#QSQLITE}{QSQLITE} \li SQLite version 3 - \row \li \l{#QTDS}{QTDS} \li Sybase Adaptive Server \note obsolete since Qt 4.7 \endtable SQLite is the in-process database system with the best test coverage @@ -500,49 +498,6 @@ in your installation package. It must be placed in the same folder as the application executable. - \target QTDS - \section2 QTDS for Sybase Adaptive Server - - \note TDS is no longer used by MS Sql Server, and is superseded by - \l{QODBC}{ODBC}. QTDS is obsolete from Qt 4.7. - - It is not possible to set the port with QSqlDatabase::setPort() due to limitations in the - Sybase client library. Refer to the Sybase documentation for information on how to set up - a Sybase client configuration file to enable connections to databases on non-default ports. - - \section3 How to Build the QTDS Plugin on Unix and \macos - - Under Unix, two libraries are available which support the TDS protocol: - - \list - \li FreeTDS, a free implementation of the TDS protocol - (\l{http://www.freetds.org}). - - \li Sybase Open Client, available from \l{https://support.sap.com}. - \endlist - - Regardless of which library you use, the shared object file - \c{libsybdb.so} is needed. Set the \c SYBASE environment variable to - point to the directory where you installed the client library and - execute \c{qmake}: - - \snippet code/doc_src_sql-driver.qdoc 16 - - \section3 How to Build the QDTS Plugin on Windows - - You can either use the DB-Library supplied by Microsoft or the Sybase - Open Client (\l{https://support.sap.com}). Configure will try to find - NTWDBLIB.LIB to build the plugin: - - \snippet code/doc_src_sql-driver.qdoc 17 - - By default, the Microsoft library is used on Windows. If you want to - force the use of the Sybase Open Client, you must define \c - Q_USE_SYBASE in \c{%QTDIR%\qtbase\src\plugins\sqldrivers\tds\qsql_tds.cpp}. - - If you are not using a Microsoft compiler, replace \c nmake - with \c mingw32-make in the line above. - \target QDB2 \section2 QDB2 for IBM DB2 (Version 7.1 and Above) @@ -571,13 +526,6 @@ If you are not using a Microsoft compiler, replace \c nmake with \c mingw32-make in the line above. - \target QSQLITE2 - \section2 QSQLITE2 for SQLite Version 2 - - The Qt SQLite 2 plugin is offered for compatibility. Whenever - possible, use the \l{#QSQLITE}{version 3 plugin} instead. The - build instructions for version 3 apply to version 2 as well. - \target QSQLITE \section2 QSQLITE for SQLite (Version 3 and Above) diff --git a/src/sql/kernel/qsqlcachedresult.cpp b/src/sql/kernel/qsqlcachedresult.cpp index c335d7d8fe..1e76154f82 100644 --- a/src/sql/kernel/qsqlcachedresult.cpp +++ b/src/sql/kernel/qsqlcachedresult.cpp @@ -60,14 +60,6 @@ QT_BEGIN_NAMESPACE static const uint initial_cache_size = 128; -QSqlCachedResultPrivate::QSqlCachedResultPrivate(QSqlCachedResult *q, const QSqlDriver *drv) - : QSqlResultPrivate(q, drv), - rowCacheEnd(0), - colCount(0), - atEnd(false) -{ -} - void QSqlCachedResultPrivate::cleanup() { cache.clear(); diff --git a/src/sql/kernel/qsqlcachedresult_p.h b/src/sql/kernel/qsqlcachedresult_p.h index 543a902554..1bca1fd090 100644 --- a/src/sql/kernel/qsqlcachedresult_p.h +++ b/src/sql/kernel/qsqlcachedresult_p.h @@ -101,7 +101,8 @@ class Q_SQL_EXPORT QSqlCachedResultPrivate: public QSqlResultPrivate Q_DECLARE_PUBLIC(QSqlCachedResult) public: - QSqlCachedResultPrivate(QSqlCachedResult *q, const QSqlDriver *drv); + using QSqlResultPrivate::QSqlResultPrivate; + bool canSeek(int i) const; inline int cacheCount() const; void init(int count, bool fo); @@ -110,9 +111,9 @@ public: void revertLast(); QSqlCachedResult::ValueCache cache; - int rowCacheEnd; - int colCount; - bool atEnd; + int rowCacheEnd = 0; + int colCount = 0; + bool atEnd = false; }; QT_END_NAMESPACE diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp index 32338c1fe2..094943ca31 100644 --- a/src/sql/kernel/qsqldatabase.cpp +++ b/src/sql/kernel/qsqldatabase.cpp @@ -619,8 +619,6 @@ QStringList QSqlDatabase::connectionNames() \row \li QODBC \li ODBC Driver (includes Microsoft SQL Server) \row \li QPSQL \li PostgreSQL Driver \row \li QSQLITE \li SQLite version 3 or above - \row \li QSQLITE2 \li SQLite version 2 - \row \li QTDS \li Sybase Adaptive Server \endtable Additional third party drivers, including your own custom @@ -1185,7 +1183,7 @@ QSqlRecord QSqlDatabase::record(const QString& tablename) const \li service \endlist - \header \li DB2 \li OCI \li TDS + \header \li DB2 \li OCI \row \li @@ -1200,9 +1198,6 @@ QSqlRecord QSqlDatabase::record(const QString& tablename) const \li OCI_ATTR_PREFETCH_MEMORY \endlist - \li - \e none - \header \li SQLite \li Interbase \row @@ -1327,11 +1322,6 @@ bool QSqlDatabase::isDriverAvailable(const QString& name) \li SQLHANDLE environment, SQLHANDLE connection \li \c qsql_db2.cpp \row - \li QTDS - \li QTDSDriver - \li LOGINREC *loginRecord, DBPROCESS *dbProcess, const QString &hostName - \li \c qsql_tds.cpp - \row \li QSQLITE \li QSQLiteDriver \li sqlite *connection @@ -1343,11 +1333,6 @@ bool QSqlDatabase::isDriverAvailable(const QString& name) \li \c qsql_ibase.cpp \endtable - The host name (or service name) is needed when constructing the - QTDSDriver for creating new connections for internal queries. This - is to prevent blocking when several QSqlQuery objects are used - simultaneously. - \warning Adding a database connection with the same connection name as an existing connection, causes the existing connection to be replaced by the new one. diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp index d1c9057aac..8753352617 100644 --- a/src/sql/kernel/qsqldriver.cpp +++ b/src/sql/kernel/qsqldriver.cpp @@ -51,11 +51,10 @@ QT_BEGIN_NAMESPACE static QString prepareIdentifier(const QString &identifier, QSqlDriver::IdentifierType type, const QSqlDriver *driver) { - Q_ASSERT( driver != nullptr ); + Q_ASSERT(driver != nullptr); QString ret = identifier; - if (!driver->isIdentifierEscaped(identifier, type)) { + if (!driver->isIdentifierEscaped(identifier, type)) ret = driver->escapeIdentifier(identifier, type); - } return ret; } @@ -102,20 +101,6 @@ QSqlDriver::~QSqlDriver() } /*! - \since 4.4 - - \fn QSqlDriver::notification(const QString &name) - - This signal is emitted when the database posts an event notification - that the driver subscribes to. \a name identifies the event notification. - - \sa subscribeToNotification() - - \obsolete use QSqlDriver::notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload) - instead -*/ - -/*! \since 5.0 \fn QSqlDriver::notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant & payload) diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h index ca9f7dc51e..31de63be15 100644 --- a/src/sql/kernel/qsqldriver.h +++ b/src/sql/kernel/qsqldriver.h @@ -100,7 +100,7 @@ public: virtual QStringList tables(QSql::TableType tableType) const; virtual QSqlIndex primaryIndex(const QString &tableName) const; virtual QSqlRecord record(const QString &tableName) const; - virtual QString formatValue(const QSqlField& field, bool trimStrings = false) const; + virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const; virtual QString escapeIdentifier(const QString &identifier, IdentifierType type) const; virtual QString sqlStatement(StatementType type, const QString &tableName, @@ -113,12 +113,12 @@ public: virtual void close() = 0; virtual QSqlResult *createResult() const = 0; - virtual bool open(const QString& db, - const QString& user = QString(), - const QString& password = QString(), - const QString& host = QString(), + 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; + const QString &connOpts = QString()) = 0; virtual bool subscribeToNotification(const QString &name); virtual bool unsubscribeFromNotification(const QString &name); virtual QStringList subscribedToNotifications() const; @@ -135,10 +135,6 @@ public Q_SLOTS: virtual bool cancelQuery(); Q_SIGNALS: -#if QT_DEPRECATED_SINCE(5, 15) - QT_DEPRECATED_X("Use the 3-args version of notification() instead.") - void notification(const QString &name); -#endif void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload); protected: diff --git a/src/sql/kernel/qsqlindex.cpp b/src/sql/kernel/qsqlindex.cpp index 60b0ef6965..5781f24b5c 100644 --- a/src/sql/kernel/qsqlindex.cpp +++ b/src/sql/kernel/qsqlindex.cpp @@ -44,9 +44,6 @@ QT_BEGIN_NAMESPACE -// ### Qt 6: remove the static assertion, the 'sorts' field was changed from QList to QVector in Qt 5.6 -Q_STATIC_ASSERT((sizeof(QList<bool>) == sizeof(QVector<bool>))); - /*! \class QSqlIndex \brief The QSqlIndex class provides functions to manipulate and diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index 34a3ba3755..ce6c997919 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -261,7 +261,7 @@ QSqlQuery::QSqlQuery(const QSqlQuery& other) /*! \internal */ -static void qInit(QSqlQuery *q, const QString& query, QSqlDatabase db) +static void qInit(QSqlQuery *q, const QString& query, const QSqlDatabase &db) { QSqlDatabase database = db; if (!database.isValid()) @@ -281,7 +281,7 @@ static void qInit(QSqlQuery *q, const QString& query, QSqlDatabase db) \sa QSqlDatabase */ -QSqlQuery::QSqlQuery(const QString& query, QSqlDatabase db) +QSqlQuery::QSqlQuery(const QString& query, const QSqlDatabase &db) { d = QSqlQueryPrivate::shared_null(); qInit(this, query, db); @@ -294,7 +294,7 @@ QSqlQuery::QSqlQuery(const QString& query, QSqlDatabase db) \sa QSqlDatabase */ -QSqlQuery::QSqlQuery(QSqlDatabase db) +QSqlQuery::QSqlQuery(const QSqlDatabase &db) { d = QSqlQueryPrivate::shared_null(); qInit(this, QString(), db); diff --git a/src/sql/kernel/qsqlquery.h b/src/sql/kernel/qsqlquery.h index cbbc25c4ec..3be04c492c 100644 --- a/src/sql/kernel/qsqlquery.h +++ b/src/sql/kernel/qsqlquery.h @@ -59,8 +59,8 @@ class Q_SQL_EXPORT QSqlQuery { public: explicit QSqlQuery(QSqlResult *r); - explicit QSqlQuery(const QString& query = QString(), QSqlDatabase db = QSqlDatabase()); - explicit QSqlQuery(QSqlDatabase db); + explicit QSqlQuery(const QString& query = QString(), const QSqlDatabase &db = QSqlDatabase()); + explicit QSqlQuery(const QSqlDatabase &db); QSqlQuery(const QSqlQuery& other); QSqlQuery& operator=(const QSqlQuery& other); ~QSqlQuery(); diff --git a/src/sql/kernel/qsqlresult_p.h b/src/sql/kernel/qsqlresult_p.h index fe13bcc33f..3b9697046d 100644 --- a/src/sql/kernel/qsqlresult_p.h +++ b/src/sql/kernel/qsqlresult_p.h @@ -79,9 +79,9 @@ class Q_SQL_EXPORT QSqlResultPrivate public: QSqlResultPrivate(QSqlResult *q, const QSqlDriver *drv) : q_ptr(q), - sqldriver(const_cast<QSqlDriver*>(drv)) + sqldriver(const_cast<QSqlDriver *>(drv)) { } - virtual ~QSqlResultPrivate() { } + virtual ~QSqlResultPrivate() = default; void clearValues() { @@ -104,7 +104,7 @@ public: void clear() { clearValues(); - clearIndex();; + clearIndex(); } virtual QString fieldSerial(int) const; @@ -116,22 +116,23 @@ public: QPointer<QSqlDriver> sqldriver; QString sql; QSqlError error; - QSql::NumericalPrecisionPolicy precisionPolicy = QSql::LowPrecisionDouble; - QSqlResult::BindingSyntax binds = QSqlResult::PositionalBinding; - int idx = QSql::BeforeFirstRow; - int bindCount = 0; - bool active = false; - bool isSel = false; - bool forwardOnly = false; QString executedQuery; QHash<int, QSql::ParamType> types; QVector<QVariant> values; - typedef QHash<QString, QVector<int> > IndexMap; + using IndexMap = QHash<QString, QVector<int> >; IndexMap indexes; - typedef QVector<QHolder> QHolderVector; + using QHolderVector = QVector<QHolder>; QHolderVector holders; + + QSqlResult::BindingSyntax binds = QSqlResult::PositionalBinding; + QSql::NumericalPrecisionPolicy precisionPolicy = QSql::LowPrecisionDouble; + int idx = QSql::BeforeFirstRow; + int bindCount = 0; + bool active = false; + bool isSel = false; + bool forwardOnly = false; }; QT_END_NAMESPACE diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp index 20adec6a3b..4f5f00bf96 100644 --- a/src/sql/models/qsqlrelationaltablemodel.cpp +++ b/src/sql/models/qsqlrelationaltablemodel.cpp @@ -161,7 +161,7 @@ struct QRelation class QRelatedTableModel : public QSqlTableModel { public: - QRelatedTableModel(QRelation *rel, QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()); + QRelatedTableModel(QRelation *rel, QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase()); bool select() override; private: bool firstSelect; @@ -245,7 +245,7 @@ bool QRelation::isValid() -QRelatedTableModel::QRelatedTableModel(QRelation *rel, QObject *parent, QSqlDatabase db) : +QRelatedTableModel::QRelatedTableModel(QRelation *rel, QObject *parent, const QSqlDatabase &db) : QSqlTableModel(parent, db), firstSelect(true), relation(rel) { } @@ -410,7 +410,7 @@ void QSqlRelationalTableModelPrivate::clearCache() and the database connection to \a db. If \a db is not valid, the default database connection will be used. */ -QSqlRelationalTableModel::QSqlRelationalTableModel(QObject *parent, QSqlDatabase db) +QSqlRelationalTableModel::QSqlRelationalTableModel(QObject *parent, const QSqlDatabase &db) : QSqlTableModel(*new QSqlRelationalTableModelPrivate, parent, db) { } diff --git a/src/sql/models/qsqlrelationaltablemodel.h b/src/sql/models/qsqlrelationaltablemodel.h index 1929bd320a..2ebadaabd1 100644 --- a/src/sql/models/qsqlrelationaltablemodel.h +++ b/src/sql/models/qsqlrelationaltablemodel.h @@ -91,7 +91,7 @@ public: }; explicit QSqlRelationalTableModel(QObject *parent = nullptr, - QSqlDatabase db = QSqlDatabase()); + const QSqlDatabase &db = QSqlDatabase()); virtual ~QSqlRelationalTableModel(); QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const override; diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp index 7d2421d34e..941735767d 100644 --- a/src/sql/models/qsqltablemodel.cpp +++ b/src/sql/models/qsqltablemodel.cpp @@ -291,7 +291,7 @@ bool QSqlTableModelPrivate::exec(const QString &stmt, bool prepStatement, The default edit strategy is \l OnRowChange. */ -QSqlTableModel::QSqlTableModel(QObject *parent, QSqlDatabase db) +QSqlTableModel::QSqlTableModel(QObject *parent, const QSqlDatabase &db) : QSqlQueryModel(*new QSqlTableModelPrivate, parent) { Q_D(QSqlTableModel); @@ -300,7 +300,7 @@ QSqlTableModel::QSqlTableModel(QObject *parent, QSqlDatabase db) /*! \internal */ -QSqlTableModel::QSqlTableModel(QSqlTableModelPrivate &dd, QObject *parent, QSqlDatabase db) +QSqlTableModel::QSqlTableModel(QSqlTableModelPrivate &dd, QObject *parent, const QSqlDatabase &db) : QSqlQueryModel(dd, parent) { Q_D(QSqlTableModel); diff --git a/src/sql/models/qsqltablemodel.h b/src/sql/models/qsqltablemodel.h index eba27e60ec..1ac8bd9b04 100644 --- a/src/sql/models/qsqltablemodel.h +++ b/src/sql/models/qsqltablemodel.h @@ -62,7 +62,7 @@ class Q_SQL_EXPORT QSqlTableModel: public QSqlQueryModel public: enum EditStrategy {OnFieldChange, OnRowChange, OnManualSubmit}; - explicit QSqlTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()); + explicit QSqlTableModel(QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase()); virtual ~QSqlTableModel(); virtual void setTable(const QString &tableName); @@ -127,7 +127,7 @@ Q_SIGNALS: void beforeDelete(int row); protected: - QSqlTableModel(QSqlTableModelPrivate &dd, QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()); + QSqlTableModel(QSqlTableModelPrivate &dd, QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase()); virtual bool updateRowInTable(int row, const QSqlRecord &values); virtual bool insertRowIntoTable(const QSqlRecord &values); |