The classes RWDBColumn and RWDBValue have an associated RWDBValue::ValueType that specifies the data type of the database column or field being referenced. Mapping between this data type and the database vendor type runs in both directions:
When fetching data or retrieving information about tables, the DB Access Module for MySQL converts the MySQL type value into RWDBValue::ValueTypes. This mapping is shown in Table 1, which also gives the C++ data type corresponding to the RWDBValue::ValueType.
When creating tables, the DB Access Module for MySQL maps the given RWDBValue::ValueType into a MySQL type code. This mapping is shown in Table 2.
The RWDBValue::ValueType, 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 DB Interface Module Reference Guide.
MySQL Data Type | RWDBValue::ValueType | C++ Data Type |
decimal numeric | Decimal | |
bigint | UnsignedLongLong, LongLong | unsigned long long, long long |
tinyblob, blob, mediumblob, longblob | Blob | |
double | Double | double |
float | Float | float |
tinyint | Char, UnsignedChar | char, unsigned char |
smallint | Short, UnsignedShort | short, unsigned short |
integer, mediumint | Long, UnsignedLong | long, unsigned long |
char, varchar, tinytext, mediumtext, text, longtext, enum, set | String | |
date | Date | |
datetime, time, timestamp | DateTime | |
year | UnsignedShort | unsigned short |
RWDBValue::ValueType | MySQL Data Types |
Blob | MEDIUMBLOB if length is RWDB_NO_TRAIT. If 0<= length <= 255 TINYBLOB. If 256 <= length <=65,535 BLOB. If 65,536 <= length <= 16,777,215 MEDIUMBLOB. Otherwise, LONGBLOB. |
Tiny, UnsignedTiny, Char, UnsignedChar | TINYINT |
Date | DATE |
DateTime | DATETIME |
Decimal (p,s) | DECIMAL using precision and scale of column. If p <= 0 defaults to 8. If s <= 0 defaults to 0. |
Double | DOUBLE |
Float (P) | FLOAT if precision is RWDB_NO_TRAIT. Otherwise, FLOAT (p) using precision of column. |
Int, UnsignedInt, Long, UnsignedLong | INT |
Short, UnsignedShort | SMALLINT |
LongLong, UnsignedLongLong | BIGINT |
String | MEDIUMTEXT if length is RWDB_NO_TRAIT. If 0<= length <= 255 VARCHAR(length) using the storageLength of the RWDBColumn. If 256 <= length <= 65,535 TEXT. If 65,536 <= length <= 16,777,215 MEDIUMTEXT. Otherwise LONGTEXT. |
Table 3 outlines the known restrictions associated with each DB Interface Module value type.
RWDBValue::ValueType | Restrictions |
Blob | No restrictions. |
Char, UnsignedChar | No restrictions. |
Blob | No restrictions |
Char, UnsignedChar | No restrictions |
Date | No restrictions. |
DateTime | No restrictions. |
Decimal | No restrictions. |
Double | No restrictions. |
Duration | This data type is not supported. |
Float | No restrictions. |
Int, UnsignedInt | No restrictions. |
Long, UnsignedLong | No restrictions. |
LongLong, UnsignedLongLong | No restrictions. |
MBString | This data type is not supported. |
LongDouble | No restrictions. |
String | No restrictions. |
Short, UnsignedShort | No restrictions. |
WString | This data type is not supported. |
UString | This data type is not supported. |
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.