Driver features were introduced in the section called “Driver features”. A driver feature is actually an interface (abstract class) which each driver may or may not implement. Two basic features are defined by iopcdb - the TypeMappingFeature
and SqlStatementsFeature
. See their documentation for detailed description.
The database driver feature interface provides basically only two things - it allows us to ask whether the driver supports the feature specified and allows us to obtain a reference to its implementation. This is best illustrated by an example:
Driver& d = conn->getDriver(); if (d.supportsFeature<SqlStatementsFeature>()) { TypeMappingFeature& f = d.getFeature<TypeMappingFeature>(); string sqlType = f.getTypeSql(TypeDesc<string>::getType()); cout << sqlType << endl; }
First, we obtain a driver reference from an existing connection. We want to use the TypeMappingFeature
to obtain a SQL type definition for the std::string
type. Then we ask, if the driver even supports such feature and finally we obtain a reference to its implementation. Having reference to the feature implementation we may call methods of the feature according to its interface and documentation. This example returns a VARCHAR2(2000)
string representing a SQL type which corresponds to std::string. The number 2000 is taken from the db.type.length
default metadata specified on the std::string type.