Rogue Wave banner
Previous fileTop of DocumentContentsIndex pageNext file
DB Access Module for ODBC User's Guide
Rogue Wave web site:  Home Page  |  Main Documentation Page

2.3 Data Types

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:

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 C++ API Reference Guide.

Table 1: Type mapping when retrieving data

ODBC Data Type RWDBValue::ValueType C++ Data Type
SQL_NUMERIC
SQL_DECIMAL
Decimal RWDecimalPortable
SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY
Blob RWDBBlob
SQL_BIT UnsignedChar unsigned char
SQL_DOUBLE
SQL_FLOAT
Double double
SQL_INTEGER Long/UnsignedLong
(32-bit architectures)
Int/UnsignedInt
(64-bit architectures)
long int / unsigned long int
(32-bit architectures)
int / unsigned int
(64-bit architectures)
SQL_INTERVAL Duration RWDBDuration
SQL_LONGVARCHAR
SQL_VARCHAR
SQL_CHAR
String RWCString
SQL_REAL Float float
SQL_SMALLINT Short
UnsignedShort
short int
unsigned short int
SQL_TYPE_DATE Date RWDate
SQL_TYPE_TIME
SQL_TYPE_TIMESTAMP1
DateTime RWDBDateTime2 RWDateTime
SQL_WLONGVARCHAR
SQL_WVARCHAR
SQL_WCHAR
WString RWWString
SQL_BIGINT LongLong
UnsignedLongLong
long long
unsigned long long
  1. Values of type SQL_TYPE_TIME and SQL_TYPE_TIMESTAMP 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.
  2. RWDBDateTime is deprecated. Please use RWDateTime.

Table 2: Type mapping when creating tables

RWDBValue::ValueType Possible ODBC Data Types: the type chosen is the first type supported by the underlying driver
Blob If 0 < length <= 255, {SQL_VARBINARY, SQL_BINARY, SQL_LONGVARBINARY, SQL_LONGVARCHAR} using the storageLength of the RWDBColumn if applicable; otherwise,
{SQL_LONGVARBINARY,SQL_VARBINARY,SQL_BINARY, SQL_LONGVARCHAR} using the storageLength of the RWDBColumn if applicable
Char, UnsignedChar {SQL_TINYINT, SQL_SMALLINT, SQL_INTEGER, SQL_DECIMAL, SQL_NUMERIC}
Date {SQL_TYPE_DATE, SQL_TYPE_TIMESTAMP}
DateTime {SQL_TYPE_TIMESTAMP, SQL_TYPE_DATE}
Decimal {SQL_DECIMAL, SQL_NUMERIC, SQL_DOUBLE}, using the precision and scale of the RWDBColumn if applicable
Double {SQL_DOUBLE, SQL_FLOAT, SQL_DECIMAL, SQL_NUMERIC }
Duration {SQL_INTERVAL_SECOND}
Float {SQL_REAL, SQL_DOUBLE, SQL_FLOAT, SQL_DECIMAL, SQL_NUMERIC} using the precision and scale of the RWDBColumn if applicable
Int, UnsignedInt {SQL_SMALLINT, SQL_INTEGER, SQL_REAL, SQL_DOUBLE, SQL_FLOAT, SQL_DECIMAL, SQL_NUMERIC}
Long, UnsignedLong {SQL_INTEGER, SQL_REAL, SQL_DOUBLE, SQL_FLOAT, SQL_DECIMAL, SQL_NUMERIC}
LongLong, UnsignedLongLong {SQL_BIGINT, SQL_DECIMAL, SQL_REAL}1
Short, UnsignedShort {SQL_SMALLINT, SQL_INTEGER, SQL_REAL, SQL_DOUBLE, SQL_FLOAT, SQL_DECIMAL, SQL_NUMERIC}
String If 0 < length <= 255,{SQL_VARCHAR, SQL_CHAR, SQL_LONGVARCHAR}; otherwise, {SQL_LONGVARCHAR, SQL_VARCHAR, SQL_CHAR} using the storageLength of the RWDBColumn, if applicable.
WString
UString
If 0 < length <= 254, {SQL_WVARCHAR, SQL_WCHAR, SQL_WLONGVARCHAR} using the storageLength of the RWDBColumn if applicable; otherwise, {SQL_WLONGVARCHAR,SQL_WVARCHAR, SQL_WCHAR} using the storageLength of the RWDBColumn if applicable.
  1. The precision of the decimal type created is 20.

2.3.1 Restrictions on the Use of Data Types

Neither the DB Interface Module nor the ODBC specification impose restrictions on the use of most data types, but individual ODBC drivers may. Check for specific restrictions in the documentation provided with your ODBC driver. Table 3 outlines the known restrictions associated with each DB Interface Module type.

Table 3: Restrictions on the use of DB Interface Module data types

RWDBValue::ValueType Restrictions
Blob No restrictions.
Char, UnsignedChar No restrictions.
Date No restrictions.
DateTime No restrictions.
Decimal No restrictions.
Double No restrictions.
Duration No restrictions.
Float No restrictions.
Int, UnsignedInt No restrictions.
Long, UnsignedLong No restrictions.
LongLong, UnsignedLongLong No restrictions.
MBString This data type is not supported.
String No restrictions.
Short, UnsignedShort No restrictions.
WString
UString
This data type may not be supported—check your driver documentation. Refer to Section 2.12 for more information.
LongDouble For input binding, long double value inserted should be in range of what database supports. Please check your database documentation for details.


Previous fileTop of DocumentContentsNo linkNext file

Copyright © Rogue Wave Software, Inc. All Rights Reserved.

The Rogue Wave name and logo, and SourcePro, are registered trademarks of Rogue Wave Software. All other trademarks are the property of their respective owners.
Provide feedback to Rogue Wave about its documentation.