Datatypes

The classes RWDBColumn and RWDBValue have an associated RWDBValue::ValueType that specifies the datatype of the database column or field being referenced. Mapping between this datatype and the database vendor type runs in both directions:

When fetching data or retrieving information about tables, the DB Access Module for DB2 CLI converts the SQL datatype provided by DB2’s ODBC implementation into RWDBValue::ValueTypes. This mapping is shown in Table 208, which also gives the C++ datatype corresponding to the RWDBValue::ValueType.

When creating tables, the DB Access Module for DB2 CLI maps the given RWDBValue::ValueType to a DB2 server type. This mapping is shown in Table 209.

The RWDBValue::ValueTypes, accessible through the type() method, are uniform across all Access Modules.

For a complete explanation of the DB Interface Module data model, see Chapter 7, “The Data Model,” in the DB Interface Module User’s Guide, and RWDBValue in the SourcePro API Reference.

We update the mapping tables regularly, but Rogue Wave cannot be responsible for changes made by other vendors. For the latest information on mappings between the DB2 SQL datatypes and the actual DB2 server types used on the database, please consult IBM's DB2 Call Level Interface Guide and Reference.

Table 208. Type mapping when retrieving data

DB2 Datatype

DB2 SQL Datatype1

RWDBValue:: ValueType

C++ Datatype

CHAR
VARCHAR
LONG VARCHAR
CLOB

SQL_CHAR
SQL_VARCHAR
SQL_LONGVARCHAR
SQL_CLOB

String or UString

RWCString or RWBasicUString2

CHAR FOR BIT DATA
VARCHAR FOR BIT DATA
LONGVARCHAR FOR BIT DATA
BLOB

SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY
SQL_BLOB

Blob

RWDBBlob

SMALLINT

SQL_SMALLINT

Short

short int

BIGINT

SQL_BIGINT

LongLong

long long

INTEGER

SQL_INTEGER

Long

long int

DOUBLE
FLOAT

SQL_DOUBLE
SQL_FLOAT

Double

double

REAL

SQL_REAL

Float

float

DATE

SQL_TYPE_DATE

Date

RWDate

NUMERIC
DECIMAL

SQL_NUMERIC
SQL_DECIMAL

Decimal

RWDecimalPortable

TIMESTAMP
TIME3

SQL_TYPE_TIMESTAMP
SQL_TYPE_TIME

DateTime

RWDateTime

GRAPHIC
VARGRAPHIC
LONGVARGRAPHIC4

SQL_GRAPHIC
SQL_VARGRAPHIC
SQL_LONGVARGRAPHIC
SQL_WCHAR
SQL_WVARCHAR
SQL_WLONGVARCHAR

WString

RWWString

DECFLOAT

SQL_DECFLOAT

Decimal

RWDecimalPortable

Table 209. Type mapping when creating tables

RWDBValue:: ValueType

DB2 Datatype

Char
UnsignedChar

SMALLINT

String
UString

If 0 < length < 255, VARCHAR using the storageLength of the RWDBColumn
If length > 32700, CLOB using the storageLength of the RWDBColumn,
Else LONG VARCHAR

WString
MBString

Not supported

Blob

If 0 < length < 255 VARCHAR FOR BIT DATA using the storageLength of the RWDBColumn
If length > 32700, BLOB using the storageLength of the RWDBColumn
Else LONG VARCHAR FOR BIT DATA

Short
UnsignedShort

SMALLINT

Int
UnsignedInt

INTEGER

Long
UnsignedLong

INTEGER

LongLong
UnsignedLongLong

BIGINT

Float

REAL

Double

DOUBLE

LongDouble

Not supported

Decimal

DECIMAL using the precision and scale of the RWDBColumn, if supplied

Date

DATE

DateTime

TIMESTAMP

TimeTuple

Not supported

TimeTupleOffset

Not supported

Duration

Not supported

In this section: