Qt 4.5: QtSql Module - Recommended use of data types

|  | Home · All Namespaces · All Classes · Main Classes · Grouped Classes · Modules · Functions |

# QtSql Module - Recommended use of data types

## Recommended use of types and widgets in Qt supported Databases

This table shows the recommended data types used when extracting data from the databases supported in Qt. It is important to note that the types used in Qt not necessary are valid as input to the specific database. One example could be that a double would work perfect as input for floating point records in a database, but not necessary as output to the database since it would be stored with 64-bit in C++.

- Recommended use of types and widgets in Qt supported Databases

- IBM DB2 data type
- Borland InterBase data type
- MySQL data type
- Oracle Call Interface data type
- ODBC data type
- PostgreSQL data type
- QSQLITE SQLite version 3 data type
- Sybase Adaptive Server data type
- SQLite Version 2

### IBM DB2 data type

IBM DB2 data type

SQL Type Description
Recommended input (C++ data type and Qt )
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
BIGINT | 64-bit signed integer | typedef qint64
REAL | 32-bit Single-precision floating point | By default mapping to QString
DOUBLE PRECISION | 64-bit Double-precision floating point | By default mapping to QString
FLOAT | 64-bit Double-precision floating point | By default mapping to QString
CHAR | Fixed-length, null-terminated character string | Mapped to QString
VARCHAR | Null-terminated varying length string | Mapped to QString
LONG VARCHAR | Not null-terminated varying length character string | Mapped to QString
BLOB | Not null-terminated varying binary string with 4-byte string length indicator | Mapped to QByteArray
CLOB | Character large string object | Mapped to QString
DATE | Null-terminated character string of the following format: yyyy-mm-dd | Mapped to QDate
TIME | Null-terminated character string of the following format: hh.mm.ss | Mapped to QTime
TIMESTAMP | Null-terminated character string of the following format: yyyy-mm-dd-hh.mm.ss.nnnnnn | Mapped to QDateTime

### Borland InterBase data type

Borland InterBase data type

SQL Type Description
Recommended input (C++ data type/Qt Widget)
BOOLEAN | Boolean | bool
TINYINT | 8 bit signed integer | typedef qint8
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
BIGINT LONG | 64-bit signed integer | typedef qint64
REAL FLOAT | 32-bit floating point | By default mapping to QString
FLOAT | 64-bit floating point | By default mapping to QString
DOUBLE | 64-bit floating point | By default mapping to QString
DOUBLE PRECISION | 64-bit Double-precision floating point | By default mapping to QString
VARCHAR STRING | Character string, Unicode | Mapped to QString
CLOB | Character large string object | Mapped to QString
DATE | Displays date. Format: 'yyyy-mm-dd' | Mapped to QDate
TIME | Displays time. Format is 'hh:mm:ss' in 24-hour format | Mapped to QTime
TIMESTAMP | Displays a timestamp. Format is 'yyyy-mm-dd hh:mm:ss' | Mapped to QDateTime

### MySQL data type

MySQL data type

SQL Type Description
Recommended input (C++ data type/Qt Widget)
TINYINT | 8 bit signed integer | typedef qint8
TINYINT UNSIGNED | 8 bit unsigned integer | typedef quint8
SMALLINT | 16-bit signed integer | typedef qint16
SMALLINT UNSIGNED | 16-bit unsigned integer | typedef quint16
INT | 32-bit signed integer | typedef qint32
INT UNSIGNED | 32-bit unsigned integer | typedef quint32
BIGINT | 64-bit signed integer | typedef qint64
FLOAT | 32-bit Floating Point | By default mapping to QString
DOUBLE | 64-bit Floating Point | By default mapping to QString
CHAR | Character string | Mapped to QString
VARCHAR | Character string | Mapped to QString
TINYTEXT | Character string | Mapped to QString
TEXT | Character string | Mapped to QString
MEDIUMTEXT | Character string | Mapped to QString
LONGTEXT | Character string | Mapped to QString
CLOB | Character large string object | Mapped to QString
all BLOB types | BLOB | Mapped to QByteArray
DATE | Date without Time | Mapped to QDate
DATETIME | Date and Time | Mapped to QDateTime
TIMESTAMP | Date and Time | Mapped to QDateTime
TIME | Time | Mapped to QTime
YEAR | Year (int) | Mapped to QDateTime
ENUM | Enumeration of Value Set | Mapped to QString

### Oracle Call Interface data type

Oracle Call Interface data type

SQL Type Description
Recommended input (C++ data type/Qt Widget)
NUMBER | FLOAT, DOUBLE, PRECISIONc REAL | By default mapping to QString
NUMBER(38) | INTEGER INT SMALLINT | typedef qint8/16/32/64
NUMBER(p,s) | NUMERIC(p,s) DECIMAL(p,s)a | By default mapping to QString
NVARCHAR2(n) | Character string (NATIONAL CHARACTER VARYING(n) NATIONAL CHAR VARYING(n) NCHAR VARYING(n)) | Mapped to QString
NCHAR(n) | Character string (NATIONAL CHARACTER(n) NATIONAL CHAR(n) NCHAR(n)) | Mapped to QString
CHAR(n) | Character string (CHARACTER(n) CHAR(n)) | Mapped to QString
CLOB | Character large string object | Mapped to QString
BLOB | A binary large object | Mapped to QByteArray
TIMESTAMP | Year, month, and day values of date, as well as hour, minute, and second values of time | Mapped to QDateTime

### ODBC data type

ODBC data type

SQL Type Description
Recommended input (C++ data type/Qt Widget)
BIT | Boolean | BOOL
TINYINT | 8 bit integer | typedef qint8
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
BIGINT | 64-bit signed integer | typedef qint64
REAL | 32-bit Single-precision floating point | By default mapping to QString
FLOAT | 64-bit Double floating point | By default mapping to QString
DOUBLE | 64-bit Double floating point | By default mapping to QString
CHAR | Character string | Mapped to QString
VARCHAR | Character string | Mapped to QString
LONGVARCHAR | Character string | Mapped to QString
CLOB | Character large string object | Mapped to QString
DATE | Character string | Mapped to QDate
TIME | Character Time, Character string | Mapped to QTime
TIMESTAMP | Character Time, Character string | Mapped to QDateTime

### PostgreSQL data type

PostgreSQL data type

SQL Type Description
Recommended input (C++ data type/Qt Widget)
BOOLEAN | Boolean | bool
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
BIGINT | 64-bit signed integer | typedef qint64
REAL | 32-bit variable-precision floating point | By default mapping to QString
DOUBLE PRECISION | 64-bit variable-precision floating point | By default mapping to QString
DECIMAL VARIABLE | user-specified precision, exact | Mapped to QString
NUMERIC VARIABLE | user-specified precision, exact | Mapped to QString
VARCHAR | variable-length character string | Mapped to QString
CHARACTER | Character string of fixed-length | Mapped to QString
TEXT | Character string of variable-length | Mapped to QString
CLOB | Character large string object | Mapped to QString
TIMESTAMP | 8 bytes, both date and time | Mapped to QDateTime
TIMESTAMP | 8 bytes, both date and time, with time zone | Mapped to QDateTime
DATE | 4 bytes, dates only | Mapped to QDate
TIME | 8 bytes, times of day only 00:00:00.00 - 23:59:59.99 | Mapped to QTime
TIME | 12 bytes times of day only, with time zone 00:00:00.00+12 | Mapped to QDateTime

### QSQLITE SQLite version 3 data type

QSQLITE SQLite version 3 data type

SQL Type Description
Recommended input (C++ data type/Qt Widget)
NULL | NULL value. | NULL
INTEGER | Signed integer, stored in 8, 16, 24, 32, 48, or 64-bits depending on the magnitude of the value. | typedef qint8/16/32/64
REAL | 64-bit floating point value. | By default mapping to QString
TEXT | Character string (UTF-8, UTF-16BE or UTF-16-LE). | Mapped to QString
CLOB | Character large string object | Mapped to QString
BLOB | The value is a BLOB of data, stored exactly as it was input. | Mapped to QByteArray

### Sybase Adaptive Server data type

Sybase Adaptive Server data type

SQL Type Description
Recommended input (C++ data type/Qt Widget)
BINARY | Describes a fixed-length binary value up to 255 bytes in size. | Mapped to QByteArray
CHAR | Character String | Mapped to QString
DATETIME | Date and time. Range: 1753-01-01 00:00:00 through 9999-12-31 23:59:59. | Mapped to QDateTime
NCHAR | Character String of fixed length | Mapped to QString
NVARACHAR | Character String of variable length | Mapped to QString
VARCHAR | Character String of fixed length | Mapped to QString
CLOB | Character large string object | Mapped to QString
TIMESTAMP | A unique number within a database | Mapped to QString
SMALLDATETIME | Date and time. Range: 1900-01-01 00:00 through 2079-12-31 23:59 | Mapped to QDateTime
UNICHAR | Character String of fixed length.(Unicode) | Mapped to QString
UNIVARCHAR | Character String of variable length.(Unicode) | Mapped to QString
VARBINARY | Describes a variable-length binary value up to 255 bytes in size | Mapped to QByteArray

### SQLite Version 2

SQLite V.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.