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 1, 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 2.
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 Guide.
NOTE: 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 1 – 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
CHAR FOR BIT DATA
VARCHAR FOR BIT DATA
LONGVARCHAR FOR BIT DATA
BLOB
SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY
SQL_BLOB
Blob
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
NUMERIC
DECIMAL
SQL_NUMERIC
SQL_DECIMAL
Decimal
TIMESTAMP
TIME3
SQL_TYPE_TIMESTAMP
SQL_TYPE_TIME
DateTime
GRAPHIC
VARGRAPHIC
LONGVARGRAPHIC4
SQL_GRAPHIC
SQL_VARGRAPHIC
SQL_LONGVARGRAPHIC
SQL_WCHAR
SQL_WVARCHAR
SQL_WLONGVARCHAR
WString
DECFLOAT
SQL_DECFLOAT
Decimal

1 The current release of the DB Access Module for DB2 CLI does not support the DB2 SQL symbolic datatypes: BLOB LOCATOR, CLOB LOCATOR, DBCLOB, and DBCLOB LOCATOR.

2 This mapping is affected by the column type that the result data is bound to. Both datatypes are supported when retrieving string data.

3 Values of type TIMESTAMP and TIME are affected by the time zone setting on either RWDBDatabase or RWDBConnection while sending and retrieving data. The time zone setting can be set programmatically with the timeZone() method in each of these classes.

4 GRAPHIC, VARGRAPHIC, and LONGVARGRAPHIC types are available only when the DB2 database is Unicode enabled.

Table 2 – 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