Rogue Wave banner
Previous fileTop of DocumentContentsIndex pageNext file
DB Access Module for Sybase CT 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 DB Interface Module Reference Guide.

.

Table 1: Data Type mapping when retrieving data 

Adaptive Server Data Type RWDBValue::ValueType C++ Data Type

char(n)
varchar(n)
text

String

RWCString

nchar(n)
nvarchar(n)

MBString1

RWDBMBString1

unichar(n)

univarchar(n)

UString

RWBasicUString or RWUString

binary(n),
varbinary(n)
image
timestamp

Blob

RWDBBlob

bit
tinyint
smallint

Short

short int

int

Long

long int

decimal(p,0) p <= 9 numeric(p,0) p <= 9

Long

long int

decimal(p,0) 10 <= p < 19

numeric(p,0) 10 <= p < 19

LongLong

long long

decimal(p,0) p >= 19

numeric(p,0) p >= 19

Decimal

RWDecimalPortable

decimal(p,s) numeric(p,s)

Decimal

RWDecimalPortable

float(p)
double precision

Double

double

real

Float

float

money
smallmoney

Decimal

RWDecimalPortable

datetime
smalldatetime

DateTime

RWDBDateTime2 RWDateTime

  1. The Sybase Adaptive Server usertype value, when available, is used to differentiate standard and national character strings. See Section 2.10 on internationalization.
  2. RWDBDateTime is now deprecated. Please use RWDateTime.

Table 2: Data Type mapping when creating tables 

RWDBValue::ValueType Adaptive Server Data Type

Char

UnsignedChar
Tiny UnsignedTiny

tinyint

String

if 0 < length <= 255, varchar using the storageLength of the RWDBColumn, otherwise text

WString
MBString

if 0 < length is <= 255, nvarchar using the storageLength of the RWDBColumn, otherwise text

UString1

univarchar, using the storageLength of the RWDBColumn

Blob

if 0 < length <= 255, varbinary using the storageLength of the RWDBColumn, otherwise image

Short
UnsignedShort

smallint

Int
UnsignedInt

int

Long
UnsignedLong

int

Float

real

Double

float(p), using precision of column

Decimal

money or decimal(p,s) using precision and scale of column. See below.

Date
DateTime

datetime

Duration

Not supported by Client-Library

2.3.1 Restrictions on the Use of Data Types

Sybase Client-Library and servers place restrictions on the use of certain data types. Where possible, the DB Interface Module is flexible about data types. However, there are some situations where conversions are not possible, and in these cases your application must be aware of the contexts in which certain data types can be used. Table 3 outlines the restrictions associated with each DB Interface Module type.

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

RWDBValue::ValueType Restrictions

Char
UnsignedChar

No restrictions.

String
WString
MBString
UString

Not supported on RWDBBoundExpr if string size is bigger than 16384 bytes.

Blob

Not supported on RWDBBoundExpr.

Short
UnsignedShort

No restrictions.

Int
UnsignedInt

No restrictions.

Long
UnsignedLong

No restrictions.

Double

No restrictions.

Float

No restrictions.

Decimal

The precision and scale of a value can vary depending on the version of Client-Library and server. Consistent versions of clients and servers can eliminate difficulties in conversions.

Date

No restrictions.

DateTime

Accuracy limited to 3.33 milliseconds by Sybase.

Duration

Not supported by Client-Library

LongLong, UnsignedLongLong

Table creation not supported.

LongDouble

No restrictions.

2.3.2 Using Identity Columns

Sybase Adaptive Servers support identity columns. Identity columns can be used within the DB Interface Module, subject to the restrictions specified by the Sybase documentation. For more information, see the Transact-SQL User's Guide.

Applications can create tables with identity columns by providing the native SQL statement, and execute it using RWDBConnection::executeSql().

Applications can also acquire the schema of a table that contains an identity column. The schema will return identity columns as RWDBValue::Decimal data types, however there is no way to determine if the column is actually an identity column. Applications must know the identity column of a table to use it correctly.

New rows can be inserted into tables by not providing values for identity columns, effectively allowing the server to provide values. Values for identity columns should only be provided if an application demands a specific value, however. All values must follow the restrictions of the server.

Of course, updating identity columns is strictly forbidden by Adaptive Server.



Previous fileTop of DocumentContentsIndex pageNext file

© 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.