Direct Access
To retrieve data, you can either:
-
use the DB Link API alone with type-related member functions,
-
or bind the application memory space on output.
DB Link data accessors are of the form IldRequest::getCol<type>Value where <type> can be one of the following DB Link types:
-
ADT
-
Binary
-
Byte
-
Date
-
DateTime
-
Integer
-
LongText
-
Money
-
Numeric
-
Real
-
Ref
-
String
{
// 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 fetch, the value will be undetermined.