Rogue Wave banner
Previous fileTop of DocumentContentsIndex pageNext file
DB Access Module for Sybase 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: 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)
unitext
UString RWBasicUString or RWUString
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
smalldatetime2
DateTime RWDBDateTime3
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. Values of type datetime and smalldatetime 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.
  3. 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 <= 255, nvarchar using the storageLength of the RWDBColumn, otherwise text
UString 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 the Sybase client

2.3.1 Restrictions on the Use of Data Types

Sybase Open Client Client-Library and Sybase Adaptive Server Enterprise 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 the Sybase client 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 the Sybase client
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 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.