Direct Access
To retrieve data, you can either:
use the Rogue Wave DB Link API alone with type-related member functions,
or bind the application memory space on output.
Rogue Wave DB Link data accessors are of the form IldRequest::getCol<type>Value where <type> can be one of the following Rogue Wave DB Link types:
ADT Binary Byte Date DateTime Integer LongText Money Numeric Real Ref String Here is an example:
{
// Selection of the data accessor.
if (request->isColNull(i))
ItemsArray[i]._buffer = "-";
else
switch (request->getColType(i)) {
case IldDateType:
ItemsArray[i]._buffer =
IldStrRTrim((char*)request->getColDateValue(i));
break;
case IldDateTimeType:
ItemsArray[i]._buffer =
IldDateTimeToString(request->getColDateTimeValue(i));
break;
case IldStringType:
ItemsArray[i]._mode = IldLeft;
ItemsArray[i]._buffer =
(char*)request->getPurgedStringValue(i);
break;
case IldLongTextType:
ItemsArray[i]._mode = IldLeft;
ItemsArray[i]._buffer =
IldStrRTrim((char*)request->getLongTextValue(i));
break;
case IldMoneyType: {
ItemsArray[i]._buffer = &BuffersArray[i * IldBufSize];
ostrstream ostr(&BuffersArray[i * IldBufSize],
(int)IldBufSize);
ostr << '$' << request->getMoneyValue(i) << ends;
break;
}
case IldRealType: {
ItemsArray[i]._buffer = &BuffersArray[i * IldBufSize];
ostrstream ostr(&BuffersArray[i * IldBufSize],
(int)IldBufSize);
ostr << request->getRealValue(i) << ends;
break;
}
case IldByteType: {
ItemsArray[i]._buffer = &BuffersArray[i * IldBufSize];
ostrstream ostr(&BuffersArray[i * IldBufSize],
IldBufSize);
ostr << (short)request->getByteValue(i) << ends;
break;
}
case IldIntegerType: {
ItemsArray[i]._buffer = &BuffersArray[i * IldBufSize];
ostrstream ostr(&BuffersArray[i * IldBufSize],
IldBufSize);
ostr << request->getIntegerValue(i) << ends;
break;
}
case IldBinaryType: {
ItemsArray[i]._buffer = "...";
break;
}
case IldUnknownType: {
ItemsArray[i]._buffer = "???";
break;
}
}
}
Also, you should keep in mind that:
When the value is of type
IldStringType,
IldBinaryType, or
IldLongTextType, it must be copied over to the memory allocated by your application because after the next call to
IldRequest::fetch, the value will be undetermined.
Values returned for columns of type
IldDateTimeType or
IldNumericType are automatically copied into the receiving object.
Values returned for columns of type
IldObjectType or
IldCollectionType become the property of the application. Therefore, the application must delete them when they are no longer needed.
Version 5.8
Copyright © 2014, Rogue Wave Software, Inc. All Rights Reserved.