Adjust sql drivers documentation to cmake

Update sql drivers build procedure description.

Fixes: QTBUG-89782
Change-Id: I152fad108e24d394c8d21adf95ce6dbd6e7d80bc
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Alexey Edelev 2021-01-06 14:45:33 +01:00
parent 8b7894cb63
commit 65cc6ec16b
2 changed files with 196 additions and 164 deletions

View File

@ -56,7 +56,7 @@ Database options:
-sql-<driver> ........ Enable SQL <driver> plugin. Supported drivers: -sql-<driver> ........ Enable SQL <driver> plugin. Supported drivers:
db2 ibase mysql oci odbc psql sqlite db2 ibase mysql oci odbc psql sqlite
[all auto] [all auto]
-sqlite .............. Select used sqlite3 [system/qt] -sqlite .............. Select used sqlite [system/qt]
[...] [...]
//! [0] //! [0]
@ -70,147 +70,171 @@ BEGIN
END END
//! [1] //! [1]
//! [3]
cd $QTDIR/qtbase/src/plugins/sqldrivers
qmake -- MYSQL_PREFIX=/usr/local
make sub-mysql
//! [3]
//! [3]
mkdir build-sqldrivers
cd build-sqldrivers
//! [4] qt-cmake -G"Ninja" <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.<so|dylib>"
cd $QTDIR/qtbase/src/plugins/sqldrivers/mysql qt-cmake --build .
make install qt-cmake --install
//! [4] //! [3]
//! [5] //! [5]
cd %QTDIR%\qtbase\src\plugins\sqldrivers mkdir build-sqldrivers
qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Connector C 6.1/include" MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Connector C 6.1/lib" cd build-sqldrivers
nmake sub-mysql
nmake install qt-cmake -G"Ninja" <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DMySQL_INCLUDE_DIR="C:\mysql-8.0.22-winx64\include" -DMySQL_LIBRARY="C:\mysql-8.0.22-winx64\lib\libmysql.lib"
qt-cmake --build .
qt-cmake --install
//! [5] //! [5]
//! [7] //! [7]
cd $QTDIR/qtbase/src/plugins/sqldrivers mkdir build-sqldrivers
qmake -- OCI_INCDIR=/usr/include/oracle/11.2/client OCI_LIBDIR=/usr/lib/oracle/11.2/client/lib cd build-sqldrivers
make sub-oci
qt-cmake -G"Ninja" <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DOracle_INCLUDE_DIR="/usr/include/oracle/21/client64" -DOracle_LIBRARY="/usr/lib/oracle/21/client64/lib/libclntsh.<so|dylib>"
qt-cmake --build .
qt-cmake --install
//! [7] //! [7]
//! [8] //! [8]
cd %QTDIR%\qtbase\src\plugins\sqldrivers mkdir build-sqldrivers
qmake -- OCI_INCDIR=c:/oracle/oci/include OCI_LIBDIR=c:/oracle/oci/lib/msvc cd build-sqldrivers
nmake sub-oci qt-cmake -G"Ninja" <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DOracle_INCLUDE_DIR="C:\oracle\sdk\include" -DOracle_LIBRARY="C:\oracle\oci.lib"
qt-cmake --build .
qt-cmake --install
//! [8] //! [8]
//! [9] //! [9]
set PATH=%PATH%;c:\oracle\bin set PATH=%PATH%;C:\oracle
//! [9] //! [9]
//! [11] //! [11]
cd $QTDIR/qtbase/src/plugins/sqldrivers mkdir build-sqldrivers
qmake -- ODBC_PREFIX=/usr/local/unixODBC cd build-sqldrivers
make sub-odbc
qt-cmake -G"Ninja" <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DODBC_INCLUDE_DIR="/usr/local/unixODBC/include" -DODBC_LIBRARY="/usr/local/unixODBC/lib/libodbc.<so|dylib>"
qt-cmake --build .
qt-cmake --install
//! [11] //! [11]
//! [12] //! [12]
cd %QTDIR%\qtbase\src\plugins\sqldrivers mkdir build-sqldrivers
qmake cd build-sqldrivers
nmake sub-odbc
qt-cmake -G"Ninja" <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform>
qt-cmake --build .
qt-cmake --install
//! [12] //! [12]
//! [13] //! [13]
cd $QTDIR/qtbase/src/plugins/sqldrivers mkdir build-psql-driver
qmake -- PSQL_INCDIR=/usr/include/pgsql cd build-psql-driver
make sub-psql
qt-cmake -G"Ninja" <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers-DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DCMAKE_INCLUDE_PATH="/usr/local/pgsql/include" -DCMAKE_LIBRARY_PATH="/usr/local/pgsql/lib"
qt-cmake --build .
qt-cmake --install
//! [13] //! [13]
//! [15] //! [15]
cd %QTDIR%\qtbase\src\plugins\sqldrivers mkdir build-sqldrivers
qmake -- PSQL_INCDIR=C:/psql/include PSQL_LIBDIR=C:/psql/lib/ms cd build-sqldrivers
nmake sub-psql
nmake install qt-cmake -G"Ninja" <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DCMAKE_INCLUDE_PATH="C:\pgsql\include" -DCMAKE_LIBRARY_PATH="C:\pgsql\lib"
qt-cmake --build .
qt-cmake --install
//! [15] //! [15]
//! [18] //! [18]
cd $QTDIR/qtbase/src/plugins/sqldrivers mkdir build-sqldrivers
qmake -- DB2_PREFIX=$DB2DIR cd build-sqldrivers
make sub-db2
qt-cmake -G"Ninja" <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DDB2_INCLUDE_DIR="/usr/local/db2/include" -DDB2_LIBRARY="/usr/local/db2/lib/libdb2.<so|dylib>"
qt-cmake --build .
qt-cmake --install
//! [18] //! [18]
//! [20] //! [20]
cd %QTDIR%\qtbase\src\plugins\sqldrivers mkdir build-sqldrivers
qmake -- DB2_PREFIX="<DB2 home>/sqllib" cd build-sqldrivers
nmake sub-db2
nmake install qt-cmake -G"Ninja" <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DDB2_INCLUDE_DIR="C:\db2\include" -DDB2_LIBRARY="C:\db2\lib\db2.lib"
qt-cmake --build .
qt-cmake --install
//! [20] //! [20]
//! [21] //! [21]
cd $QTDIR/qtbase/src/plugins/sqldrivers mkdir build-sqldrivers
qmake -- -system-sqlite SQLITE3_PREFIX=$SQLITE cd build-sqldrivers
make sub-sqlite
qt-cmake -G"Ninja" <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DFEATURE_system_sqlite=ON -DCMAKE_INCLUDE_PATH="$SQLITE/include" -DCMAKE_LIBRARY_PATH="$SQLITE/lib"
qt-cmake --build .
qt-cmake --install
//! [21] //! [21]
//! [23] //! [23]
cd %QTDIR%\qtbase\src\plugins\sqldrivers mkdir build-sqldrivers
qmake -- -system-sqlite SQLITE3_PREFIX=C:/SQLITE cd build-sqldrivers
nmake sub-sqlite
nmake install qt-cmake -G"Ninja" <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DFEATURE_system_sqlite=ON -DCMAKE_INCLUDE_PATH="C:\SQLITE\include" -DCMAKE_LIBRARY_PATH="C:\SQLITE\lib"
qt-cmake --build .
qt-cmake --install
//! [23] //! [23]
//! [27] //! [27]
cd $QTDIR/qtbase/src/plugins/sqldrivers mkdir build-sqldrivers
qmake -- IBASE_PREFIX=/opt/interbase cd build-sqldrivers
make sub-ibase
qt-cmake -G"Ninja" <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DInterbase_INCLUDE_DIR="/opt/interbase/include" -DInterbase_LIBRARY="/opt/interbase/lib/libgds.<so|dylib>"
qt-cmake --build .
qt-cmake --install
//! [27] //! [27]
//! [28] //! [28]
cd $QTDIR/qtbase/src/plugins/sqldrivers mkdir build-sqldrivers
qmake -- IBASE_PREFIX=/opt/interbase IBASE_LIBS=-lfbclient cd build-sqldrivers
make sub-ibase
qt-cmake -G"Ninja" <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DInterbase_INCLUDE_DIR="/opt/interbase/include" -DInterbase_LIBRARY="/opt/interbase/lib/libfbclient.<so|dylib>"
qt-cmake --build .
qt-cmake --install
//! [28] //! [28]
//! [29] //! [29]
cd %QTDIR%\qtbase\src\plugins\sqldrivers mkdir build-sqldrivers
qmake -- IBASE_INCDIR=C:/interbase/include cd build-sqldrivers
nmake sub-ibase
nmake install qt-cmake -G"Ninja" <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DInterbase_INCLUDE_DIR="C:\interbase\include" -DInterbase_LIBRARY="C:\interbase\gds.lib"
qt-cmake --build .
qt-cmake --install
//! [29] //! [29]
//! [30] //! [30]
cd %QTDIR%\qtbase\src\plugins\sqldrivers mkdir build-sqldrivers
qmake -- IBASE_INCDIR=C:/interbase/include IBASE_LIBS=-lfbclient cd build-sqldrivers
nmake sub-ibase
nmake install qt-cmake -G"Ninja" <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DInterbase_INCLUDE_DIR="C:\interbase\include" -DInterbase_LIBRARY="C:\interbase\lib\fbclient_ms.lib"
qt-cmake --build .
qt-cmake --install
//! [30] //! [30]
//! [32]
configure OCI_INCDIR=/usr/include/oracle/10.1.0.3/client OCI_LIBDIR=/usr/lib/oracle/10.1.0.3/client/lib -R /usr/lib/oracle/10.1.0.3/client/lib OCI_LIBS="-lclntsh -lnnz10"
make
//! [32]
//! [33]
cd $QTDIR/qtbase/src/plugins/sqldrivers
qmake -- OCI_INCDIR=/usr/include/oracle/10.1.0.3/client OCI_LIBDIR=/usr/lib/oracle/10.1.0.3/client/lib OCI_LIBS="-Wl,-rpath,/usr/lib/oracle/10.1.0.3/client/lib -lclntsh -lnnz10"
make sub-oci
//! [33]
//! [35] //! [35]
QSqlDatabase: QPSQL driver not loaded QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMARIADB QODBC QPSQL QSqlDatabase: available drivers: QSQLITE QMYSQL QMARIADB QODBC QPSQL
@ -236,21 +260,7 @@ QSqlRecord rec = database.record(tableString.toLower());
//! [40] //! [40]
//! [41] //! [41]
C:\Qt5\5.13.2\Src\qtbase\src\plugins\sqldrivers>qmake -version C:\Qt\6.0.0\mingw81_64\bin\qt-cmake -G"Ninja" C:\Qt\6.0.0\Src\qtbase\src\plugins\sqldrivers -DMySQL_INCLUDE_DIR="C:\mysql-8.0.22-winx64\include" -DMySQL_LIBRARY="C:\mysql-8.0.22-winx64\lib\libmysql.lib" -DCMAKE_INSTALL_PREFIX="C:\Qt\6.0.0\mingw81_64"
QMake version 3.1
Using Qt version 5.13.2 in C:/Qt5/5.13.2/mingw73_64/lib
C:\Qt5\5.13.2\Src\qtbase\src\plugins\sqldrivers>qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Connector C 6.1/include" MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Connector C 6.1/lib"
Info: creating stash file C:\Qt5\5.13.2\Src\qtbase\src\plugins\sqldrivers\.qmake.stash
Running configuration tests...
Checking for DB2 (IBM)... no
Checking for InterBase... no
Checking for MySQL... yes
Checking for OCI (Oracle)... no
Checking for ODBC... yes
Checking for PostgreSQL... no
Done running configuration tests.
Configure summary: Configure summary:
Qt Sql Drivers: Qt Sql Drivers:
@ -263,9 +273,42 @@ Qt Sql Drivers:
SQLite ................................. yes SQLite ................................. yes
Using system provided SQLite ......... no Using system provided SQLite ......... no
Qt is now configured for building. Just run 'mingw32-make'. -- Configuring done
Once everything is built, you must run 'mingw32-make install'. -- Generating done
Qt will be installed into 'C:\Qt5\5.13.2\mingw73_64'. -- Build files have been written to: C:/build-qt6-sqldrivers
Prior to reconfiguration, make sure you remove any leftovers from the previous build.
//! [41] //! [41]
//! [42]
C:\Qt\6.0.0\Src\configure.bat -sql-mysql -- -DMySQL_INCLUDE_DIR="C:\mysql-8.0.22-winx64\include" -DMySQL_LIBRARY="C:\mysql-8.0.22-winx64\lib\libmysql.lib"
Configure summary:
...
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................. yes
OCI (Oracle) ........................... no
ODBC ................................... yes
PostgreSQL ............................. no
SQLite ................................. yes
Using system provided SQLite ......... no
...
//! [42]
//! [43]
C:\Qt\6.0.0\Src\configure.bat -sql-mysql -- -DCMAKE_INCLUDE_PATH="C:\mysql-8.0.22-winx64\include" -DCMAKE_LIBRARY_PATH="C:\mysql-8.0.22-winx64\lib"
Configure summary:
...
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................. yes
OCI (Oracle) ........................... no
ODBC ................................... yes
PostgreSQL ............................. no
SQLite ................................. yes
Using system provided SQLite ......... no
...
//! [43]

View File

@ -47,7 +47,6 @@
\table \table
\header \li Driver name \li DBMS \header \li Driver name \li DBMS
\row \li \l{#QDB2}{QDB2} \li IBM DB2 (version 7.1 and above) \row \li \l{#QDB2}{QDB2} \li IBM DB2 (version 7.1 and above)
\row \li \l{#QIBASE}{QIBASE} \li Borland InterBase (version 7.0 and above) or Firebird (version 3.0 and above)
\row \li \l{#QMYSQL}{QMYSQL / MARIADB} \li MySQL or MariaDB (version 5.6 and above) \row \li \l{#QMYSQL}{QMYSQL / MARIADB} \li MySQL or MariaDB (version 5.6 and above)
\row \li \l{#QOCI}{QOCI} \li Oracle Call Interface Driver (version 12.1 and above) \row \li \l{#QOCI}{QOCI} \li Oracle Call Interface Driver (version 12.1 and above)
\row \li \l{#QODBC}{QODBC} \row \li \l{#QODBC}{QODBC}
@ -63,7 +62,7 @@
Linux. The completeness of the support for other systems depends on the Linux. The completeness of the support for other systems depends on the
availability and quality of client libraries. availability and quality of client libraries.
\b{Note:} To build a driver plugin you need to have the appropriate \note To build a driver plugin you need to have the appropriate
client library for your Database Management System (DBMS). This provides client library for your Database Management System (DBMS). This provides
access to the API exposed by the DBMS, and is typically shipped with it. access to the API exposed by the DBMS, and is typically shipped with it.
Most installation programs also allow you to install "development Most installation programs also allow you to install "development
@ -89,42 +88,53 @@
The \c configure script cannot detect the necessary libraries The \c configure script cannot detect the necessary libraries
and include files if they are not in the standard paths, so it and include files if they are not in the standard paths, so it
may be necessary to specify these paths using the \c *_INCDIR=, may be necessary to specify these paths using either
\c *_LIBDIR=, or \c *_PREFIX= command-line options. For example, driver-specific include and library path variables or \c CMAKE_INCLUDE_PATH
if your MySQL files are installed in \c /usr/local/mysql (or in and \c CMAKE_LIBRARY_PATH. For example, if your MySQL files are
\c{C:/Program Files/MySQL/MySQL Connector C 6.1} on Windows), then pass the installed in \c{C:\mysql-connector-c-6.1.11-winx64} on Windows, then pass
following parameter to configure: \c MYSQL_PREFIX=/usr/local/mysql the following parameter to double-dash part of configure line:
(or \c{MYSQL_PREFIX="C:/Program Files/MySQL/MySQL Connector C 6.1"} for Windows). \snippet code/doc_src_sql-driver.qdoc 42
When you configure drivers in the manner described above, CMake skips any
dependency checks and uses the provided paths as is. This is especially
useful if the package provides its own set of system libraries that
should not be recognized by the build routine.
In some cases it's more convenient to use \c CMAKE_INCLUDE_PATH
and \c CMAKE_LIBRARY_PATH variables to locate required libraries.
You should prefer this method if module needs to set properties
for the provided target libraries (e.g. this is required for PostgreSQL
and SQLite).
For example, you can do this as follows, to locate MySQL:
\snippet code/doc_src_sql-driver.qdoc 43
The particulars for each driver are explained below. The particulars for each driver are explained below.
\note If something goes wrong and you want qmake to recheck your \note If something goes wrong and you want CMake to recheck your
available drivers, you must remove \e{config.cache} in available drivers, you might need to remove \e{CMakeCache.txt} from the build
\e{<QTDIR>/qtbase/src/plugins/sqldrivers} - otherwise qmake will not directory.
search for the available drivers again. If you encounter an error during
the qmake stage, open \e{config.log} to see what went wrong.
\target DriverStandalone \target DriverStandalone
\section2 Compile only a specific sql driver \section2 Compile only a specific sql driver
A typical qmake run (in this case to configure for MySQL) looks like this: A typical qt-cmake run (in this case to configure for MySQL) looks like this:
\snippet code/doc_src_sql-driver.qdoc 41 \snippet code/doc_src_sql-driver.qdoc 41
\note As mentioned in \l{#DriverWithQt}{Compile Qt with a specific driver}, \note As mentioned in \l{#DriverWithQt}{Compile Qt with a specific driver},
take a look at \e{config.log} if the driver could not be found and if the driver could not be found or is not enabled, start over by removing
start over by removing \e{config.cache}. \e{CMakeCache.txt}.
Due to the practicalities of dealing with external dependencies, Due to the practicalities of dealing with external dependencies,
only the SQLite3 plugin is shipped with binary builds of Qt. only the SQLite plugin is shipped with binary builds of Qt.
Binary builds of Qt for Windows also include the ODBC plugin.
To be able to add additional drivers to the Qt installation To be able to add additional drivers to the Qt installation
without re-building all of Qt, it is possible to configure without re-building all of Qt, it is possible to configure
and build the \c qtbase/src/plugins/sqldrivers directory outside and build the \c qtbase/src/plugins/sqldrivers directory outside
of a full Qt build directory. Note that it is not possible to of a full Qt build directory. Note that it is not possible to
\e configure each driver separately, only all of them at once. \e configure each driver separately, only all of them at once.
Drivers can be \e built separately, though. Drivers can be \e built separately, though.
If the Qt build is configured with \c{-prefix}, it is necessary to
install the plugins after building them, too. For example:
\snippet code/doc_src_sql-driver.qdoc 4 \note You need to specify \c{CMAKE_INSTALL_PREFIX}, if you want to install
plugins after the build is finished.
\section1 Driver Specifics \section1 Driver Specifics
@ -151,7 +161,7 @@
\snippet code/doc_src_sql-driver.cpp 2 \snippet code/doc_src_sql-driver.cpp 2
\b{Note:} \c{@outval1} and \c{@outval2} are variables local to the current \note \c{@outval1} and \c{@outval2} are variables local to the current
connection and will not be affected by queries sent from another host connection and will not be affected by queries sent from another host
or connection. or connection.
@ -163,7 +173,7 @@
To use the embedded MySQL server, simply link the Qt plugin to \c To use the embedded MySQL server, simply link the Qt plugin to \c
libmysqld instead of \c libmysqlclient. This can be done by adding libmysqld instead of \c libmysqlclient. This can be done by adding
\c MYSQL_LIBS=-lmysqld to the configure command line. \c{-DMySQL_LIBRARY=<path/to/mysqld/>libmysqld.<so|lib|dylib>} to the configure command line.
Please refer to the MySQL documentation, chapter "libmysqld, the Embedded Please refer to the MySQL documentation, chapter "libmysqld, the Embedded
MySQL Server Library" for more information about the MySQL embedded server. MySQL Server Library" for more information about the MySQL embedded server.
@ -171,21 +181,21 @@
\section3 How to Build the QMYSQL Plugin on Unix and \macos \section3 How to Build the QMYSQL Plugin on Unix and \macos
You need the MySQL / MariaDB header files, as well as the shared library You need the MySQL / MariaDB header files, as well as the shared library
\c{libmysqlclient.so} / \c{libmariadb.so}. Depending on your Linux distribution, \c{libmysqlclient.<so|dylib>} / \c{libmariadb.<so|dylib>}. Depending on your Linux distribution,
you may need to install a package which is usually called "mysql-devel" you may need to install a package which is usually called "mysql-devel"
or "mariadb-devel". or "mariadb-devel".
Tell \l qmake where to find the MySQL / MariaDB header files and shared Tell \l qt-cmake where to find the MySQL / MariaDB header files and shared
libraries (here it is assumed that MySQL / MariaDB is installed in libraries (here it is assumed that MySQL / MariaDB is installed in
\c{/usr/local}) and run \c{make}: \c{/usr/local}) and build:
\snippet code/doc_src_sql-driver.qdoc 3 \snippet code/doc_src_sql-driver.qdoc 3
\section3 How to Build the QMYSQL Plugin on Windows \section3 How to Build the QMYSQL Plugin on Windows
You need to get the MySQL installation files (e.g. You need to get the MySQL installation files (e.g.
\l {https://dev.mysql.com/downloads/installer/}{mysql-installer-web-community-8.0.18.0.msi}) or \l {https://dev.mysql.com/downloads/installer/}{mysql-installer-web-community-8.0.22.0.msi} or
\l {https://downloads.mariadb.org/connector-c/3.1.5/}{mariadb-connector-c-3.1.5-win64.msi}. \l {https://downloads.mariadb.com/Connectors/c/connector-c-3.1.11/}{mariadb-connector-c-3.1.11-win64.msi}).
Run the installer, Run the installer,
select custom installation and install the MySQL C Connector select custom installation and install the MySQL C Connector
which matches your Qt installation (x86 or x64). which matches your Qt installation (x86 or x64).
@ -208,13 +218,10 @@
\l{https://downloads.mariadb.org/connector-c/}{MariaDB C Connector}. \l{https://downloads.mariadb.org/connector-c/}{MariaDB C Connector}.
Build the plugin as follows (here it is assumed that \c{<MySQL dir>} is Build the plugin as follows (here it is assumed that \c{<MySQL dir>} is
\c{C:/Program Files/MySQL/MySQL Connector C 6.1}): \c{C:\mysql-8.0.22-winx64}):
\snippet code/doc_src_sql-driver.qdoc 5 \snippet code/doc_src_sql-driver.qdoc 5
If you are not using a Microsoft compiler, replace \c nmake with \c
mingw32-make above.
When you distribute your application, remember to include \e libmysql.dll / \e libmariadb.dll When you distribute your application, remember to include \e libmysql.dll / \e libmariadb.dll
in your installation package. It must be placed in the same folder in your installation package. It must be placed in the same folder
as the application executable. \e libmysql.dll additionally needs the as the application executable. \e libmysql.dll additionally needs the
@ -255,31 +262,25 @@
\section3 How to Build the OCI Plugin on Unix and \macos \section3 How to Build the OCI Plugin on Unix and \macos
All you need is the "Instant Client Package - Basic" and "Instant Client All you need is the " - Basic" and "Instant Client
Package - SDK". Package - SDK".
Oracle library files required to build the driver: Oracle library files required to build the driver:
\list \list
\li \c libclntsh.so (all versions) \li \c libclntsh.<so|dylib> (all versions)
\endlist \endlist
Tell \c qmake where to find the Oracle header files and shared Tell \c qt-cmake where to find the Oracle header files and shared
libraries and run make: libraries and build.
We assume that you installed the RPM packages of the Instant Client Package SDK We assume that you installed the RPM packages of the Instant Client Package SDK
(you need to adjust the version number accordingly): (you need to adjust the version number accordingly):
\snippet code/doc_src_sql-driver.qdoc 7 \snippet code/doc_src_sql-driver.qdoc 7
\b{Note:} If you are using the Oracle Instant Client package, \note If you are using the Oracle Instant Client package,
you will need to set LD_LIBRARY_PATH when building the OCI SQL plugin, you will need to set LD_LIBRARY_PATH when building the OCI SQL plugin,
and when running an application that uses the OCI SQL plugin. You can and when running an application that uses the OCI SQL plugin.
avoid this requirement by setting RPATH, and listing all of the
libraries to link to. Here is an example:
\snippet code/doc_src_sql-driver.qdoc 32
If you wish to build the OCI plugin manually with this method, the procedure looks like this:
\snippet code/doc_src_sql-driver.qdoc 33
\section3 How to Build the OCI Plugin on Windows \section3 How to Build the OCI Plugin on Windows
@ -289,14 +290,11 @@
the "Call Interface (OCI)" option if it is available. the "Call Interface (OCI)" option if it is available.
Build the plugin as follows (here it is assumed that Oracle Client is Build the plugin as follows (here it is assumed that Oracle Client is
installed in \c{C:\oracle}): installed in \c{C:\oracle} and SDK is installed in \c{C:\oracle\sdk}):
\snippet code/doc_src_sql-driver.qdoc 8 \snippet code/doc_src_sql-driver.qdoc 8
If you are not using a Microsoft compiler, replace \c nmake with \c When you run your application, you will also need to add the \c oci.lib
mingw32-make in the line above.
When you run your application, you will also need to add the \c oci.dll
path to your \c PATH environment variable: path to your \c PATH environment variable:
\snippet code/doc_src_sql-driver.qdoc 9 \snippet code/doc_src_sql-driver.qdoc 9
@ -311,7 +309,7 @@
driver manager that is installed on your system. The QODBC plugin driver manager that is installed on your system. The QODBC plugin
then allows you to use these data sources in your Qt applications. then allows you to use these data sources in your Qt applications.
\b{Note:} You should use the native driver, if it is available, instead \note You should use the native driver, if it is available, instead
of the ODBC driver. ODBC support can be used as a fallback for compliant of the ODBC driver. ODBC support can be used as a fallback for compliant
databases if no native driver is available. databases if no native driver is available.
@ -368,7 +366,7 @@
\snippet code/doc_src_sql-driver.cpp 10 \snippet code/doc_src_sql-driver.cpp 10
\b{Note:} The value returned by the stored procedure's return statement \note The value returned by the stored procedure's return statement
is discarded. is discarded.
\section3 ODBC Unicode Support \section3 ODBC Unicode Support
@ -387,9 +385,9 @@
version and ODBC drivers at \l http://www.unixodbc.org. version and ODBC drivers at \l http://www.unixodbc.org.
You need the unixODBC header files and shared libraries. You need the unixODBC header files and shared libraries.
Tell \c qmake where to find the unixODBC header files and shared Tell \c qt-cmake where to find the unixODBC header files and shared
libraries (here it is assumed that unixODBC is installed in libraries (here it is assumed that unixODBC is installed in
\c{/usr/local/unixODBC}) and run \c{make}: \c{/usr/local/unixODBC}) and build:
\snippet code/doc_src_sql-driver.qdoc 11 \snippet code/doc_src_sql-driver.qdoc 11
@ -400,9 +398,6 @@
\snippet code/doc_src_sql-driver.qdoc 12 \snippet code/doc_src_sql-driver.qdoc 12
If you are not using a Microsoft compiler, replace \c nmake with \c
mingw32-make in the line above.
\target QPSQL \target QPSQL
\section2 QPSQL for PostgreSQL (Version 7.3 and Above) \section2 QPSQL for PostgreSQL (Version 7.3 and Above)
@ -485,16 +480,16 @@
You need the PostgreSQL client library and headers installed. You need the PostgreSQL client library and headers installed.
To make \c qmake find the PostgreSQL header files and shared To make \c qt-cmake find the PostgreSQL header files and shared
libraries, run \c qmake the following way (assuming that the libraries, build the plugin the following way (assuming that the
PostgreSQL client is installed in \c{/usr}): PostgreSQL client is installed in \c{/usr/local/pgsql}):
\snippet code/doc_src_sql-driver.qdoc 13 \snippet code/doc_src_sql-driver.qdoc 13
\section3 How to Build the QPSQL Plugin on Windows \section3 How to Build the QPSQL Plugin on Windows
Install the appropriate PostgreSQL developer libraries for your Install the appropriate PostgreSQL developer libraries for your
compiler. Assuming that PostgreSQL was installed in \c{C:\psql}, compiler. Assuming that PostgreSQL was installed in \c{C:\pgsql},
build the plugin as follows: build the plugin as follows:
\snippet code/doc_src_sql-driver.qdoc 15 \snippet code/doc_src_sql-driver.qdoc 15
@ -531,9 +526,6 @@
\snippet code/doc_src_sql-driver.qdoc 20 \snippet code/doc_src_sql-driver.qdoc 20
If you are not using a Microsoft compiler, replace \c nmake
with \c mingw32-make in the line above.
\target QSQLITE \target QSQLITE
\section2 QSQLITE for SQLite (Version 3 and Above) \section2 QSQLITE for SQLite (Version 3 and Above)
@ -571,11 +563,11 @@
\section3 How to Build the QSQLITE Plugin \section3 How to Build the QSQLITE Plugin
SQLite version 3 is included as a third-party library within Qt. SQLite version 3 is included as a third-party library within Qt.
It can be built by passing the \c{-qt-sqlite} parameter to the It can be built by passing the \c{-DFEATURE_system_sqlite=OFF} parameter to the
configure script. qt-cmake command line.
If you do not want to use the SQLite library included with Qt, you If you do not want to use the SQLite library included with Qt, you
can pass \c{-system-sqlite} to the configure script to use the SQLite can pass \c{-DFEATURE_system_sqlite=ON} to the qt-cmake command line to use the SQLite
libraries of the operating system. This is recommended whenever possible, libraries of the operating system. This is recommended whenever possible,
as it reduces the installation size and removes one component for which as it reduces the installation size and removes one component for which
you need to track security advisories. you need to track security advisories.
@ -585,7 +577,7 @@
\snippet code/doc_src_sql-driver.qdoc 21 \snippet code/doc_src_sql-driver.qdoc 21
On Windows: On Windows (assuming that SQLite is installed in \c{C:\SQLITE}):
\snippet code/doc_src_sql-driver.qdoc 23 \snippet code/doc_src_sql-driver.qdoc 23
@ -688,13 +680,10 @@
\snippet code/doc_src_sql-driver.qdoc 29 \snippet code/doc_src_sql-driver.qdoc 29
If you are using Firebird, the Firebird library has to be set explicitly: If you are using Firebird:
\snippet code/doc_src_sql-driver.qdoc 30 \snippet code/doc_src_sql-driver.qdoc 30
If you are not using a Microsoft compiler, replace \c nmake
with \c mingw32-make in the line above.
Note that \c{C:\interbase\bin} must be in the \c PATH. Note that \c{C:\interbase\bin} must be in the \c PATH.
\target troubleshooting \target troubleshooting