Library: Data
Package: DataCore
Header: Poco/Data/ODBC/Preparator.h
Class used for database preparation where we first have to register all data types with respective memory output locations before extracting data. Extraction works in two-phases: first prepare is called once, then extract n-times. In ODBC, SQLBindCol/SQLFetch is the preferred method of data retrieval (SQLGetData is available, however with numerous driver implementation dependent limitations and inferior performance). In order to fit this functionality into Poco DataConnectors framework, every ODBC SQL statement instantiates its own Preparator object. This is done once per statement execution (from StatementImpl::bindImpl()).
Preparator object is used to :
1) Prepare SQL statement. 2) Provide and contain the memory locations where retrieved values are placed during recordset iteration. 3) Keep count of returned number of columns with their respective datatypes and sizes.
Notes:
- Value datatypes in this interface prepare() calls serve only for the purpose of type distinction. - Preparator keeps its own std::vector<Any> buffer for fetched data to be later retrieved by Extractor. - prepare() methods should not be called when extraction mode is DE_MANUAL
Direct Base Classes: Poco::Data::AbstractPreparator
All Base Classes: Poco::Data::AbstractPreparator
Member Functions: actualDataSize, at, bulkSize, columns, getDataExtraction, getMaxFieldSize, maxDataSize, operator [], prepare, setDataExtraction, setMaxFieldSize
Inherited Functions: getLength, isBulk, prepare, setBulk, setLength
typedef std::vector < char * > CharArray;
typedef SharedPtr < Preparator > Ptr;
Preparator(
const Preparator & other
);
Copy constructs the Preparator.
Preparator(
const StatementHandle & rStmt,
const std::string & statement,
std::size_t maxFieldSize,
DataExtraction dataExtraction = DE_BOUND
);
Creates the Preparator.
~Preparator();
Destroys the Preparator.
std::size_t actualDataSize(
std::size_t col,
std::size_t row = POCO_DATA_INVALID_ROW
) const;
Returns the returned length for the column and row specified. This is usually equal to the column size, except for variable length fields (BLOB and variable length strings). For null values, the return value is -1 (SQL_NO_DATA)
Poco::Any & at(
std::size_t pos
);
Returns reference to column data.
std::size_t bulkSize(
std::size_t col = 0
) const;
Returns bulk size. Column argument is optional since all columns must be the same size.
std::size_t columns() const;
Returns the number of columns. Resizes the internal storage if and only if the size is zero.
DataExtraction getDataExtraction() const;
Returns data extraction mode.
std::size_t getMaxFieldSize() const;
std::size_t maxDataSize(
std::size_t pos
) const;
Returns max supported size for column at position pos. Returned length for variable length fields is the one supported by this implementation, not the underlying DB.
Poco::Any & operator[] (
std::size_t pos
);
Returns reference to column data.
void prepare(
std::size_t pos,
const Poco::Int8 & val
);
Prepares an Int8.
void prepare(
std::size_t pos,
const std::vector < Poco::Int8 > & val
);
Prepares an Int8 vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Int8 > & val
);
Prepares an Int8 deque.
void prepare(
std::size_t pos,
const std::list < Poco::Int8 > & val
);
Prepares an Int8 list.
void prepare(
std::size_t pos,
const Poco::UInt8 & val
);
Prepares an UInt8.
void prepare(
std::size_t pos,
const std::vector < Poco::UInt8 > & val
);
Prepares an UInt8 vector.
void prepare(
std::size_t pos,
const std::deque < Poco::UInt8 > & val
);
Prepares an UInt8 deque.
void prepare(
std::size_t pos,
const std::list < Poco::UInt8 > & val
);
Prepares an UInt8 list.
void prepare(
std::size_t pos,
const Poco::Int16 & val
);
Prepares an Int16.
void prepare(
std::size_t pos,
const std::vector < Poco::Int16 > & val
);
Prepares an Int16 vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Int16 > & val
);
Prepares an Int16 deque.
void prepare(
std::size_t pos,
const std::list < Poco::Int16 > & val
);
Prepares an Int16 list.
void prepare(
std::size_t pos,
const Poco::UInt16 & val
);
Prepares an UInt16.
void prepare(
std::size_t pos,
const std::vector < Poco::UInt16 > & val
);
Prepares an UInt16 vector.
void prepare(
std::size_t pos,
const std::deque < Poco::UInt16 > & val
);
Prepares an UInt16 deque.
void prepare(
std::size_t pos,
const std::list < Poco::UInt16 > & val
);
Prepares an UInt16 list.
void prepare(
std::size_t pos,
const Poco::Int32 & val
);
Prepares an Int32.
void prepare(
std::size_t pos,
const std::vector < Poco::Int32 > & val
);
Prepares an Int32 vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Int32 > & val
);
Prepares an Int32 deque.
void prepare(
std::size_t pos,
const std::list < Poco::Int32 > & val
);
Prepares an Int32 list.
void prepare(
std::size_t pos,
const Poco::UInt32 & val
);
Prepares an UInt32.
void prepare(
std::size_t pos,
const std::vector < Poco::UInt32 > & val
);
Prepares an UInt32 vector.
void prepare(
std::size_t pos,
const std::deque < Poco::UInt32 > & val
);
Prepares an UInt32 deque.
void prepare(
std::size_t pos,
const std::list < Poco::UInt32 > & val
);
Prepares an UInt32 list.
void prepare(
std::size_t pos,
const Poco::Int64 & val
);
Prepares an Int64.
void prepare(
std::size_t pos,
const std::vector < Poco::Int64 > & val
);
Prepares an Int64 vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Int64 > & val
);
Prepares an Int64 deque.
void prepare(
std::size_t pos,
const std::list < Poco::Int64 > & val
);
Prepares an Int64 list.
void prepare(
std::size_t pos,
const Poco::UInt64 & val
);
Prepares an UInt64.
void prepare(
std::size_t pos,
const std::vector < Poco::UInt64 > & val
);
Prepares an UInt64 vector.
void prepare(
std::size_t pos,
const std::deque < Poco::UInt64 > & val
);
Prepares an UInt64 deque.
void prepare(
std::size_t pos,
const std::list < Poco::UInt64 > & val
);
Prepares an UInt64 list.
void prepare(
std::size_t pos,
const bool & val
);
Prepares a boolean.
void prepare(
std::size_t pos,
const std::vector < bool > & val
);
Prepares a boolean vector.
void prepare(
std::size_t pos,
const std::deque < bool > & val
);
Prepares a boolean deque.
void prepare(
std::size_t pos,
const std::list < bool > & val
);
Prepares a boolean list.
void prepare(
std::size_t pos,
const float & val
);
Prepares a float.
void prepare(
std::size_t pos,
const std::vector < float > & val
);
Prepares a float vector.
void prepare(
std::size_t pos,
const std::deque < float > & val
);
Prepares a float deque.
void prepare(
std::size_t pos,
const std::list < float > & val
);
Prepares a float list.
void prepare(
std::size_t pos,
const double & val
);
Prepares a double.
void prepare(
std::size_t pos,
const std::vector < double > & val
);
Prepares a double vector.
void prepare(
std::size_t pos,
const std::deque < double > & val
);
Prepares a double deque.
void prepare(
std::size_t pos,
const std::list < double > & val
);
Prepares a double list.
void prepare(
std::size_t pos,
const char & val
);
Prepares a single character.
void prepare(
std::size_t pos,
const std::vector < char > & val
);
Prepares a single character vector.
void prepare(
std::size_t pos,
const std::deque < char > & val
);
Prepares a single character deque.
void prepare(
std::size_t pos,
const std::list < char > & val
);
Prepares a single character list.
void prepare(
std::size_t pos,
const std::string & val
);
Prepares a string.
void prepare(
std::size_t pos,
const std::vector < std::string > & val
);
Prepares a string vector.
void prepare(
std::size_t pos,
const std::deque < std::string > & val
);
Prepares a string deque.
void prepare(
std::size_t pos,
const std::list < std::string > & val
);
Prepares a string list.
void prepare(
std::size_t pos,
const UTF16String & val
);
Prepares a string.
void prepare(
std::size_t pos,
const std::vector < UTF16String > & val
);
Prepares a string vector.
void prepare(
std::size_t pos,
const std::deque < UTF16String > & val
);
Prepares a string deque.
void prepare(
std::size_t pos,
const std::list < UTF16String > & val
);
Prepares a string list.
void prepare(
std::size_t pos,
const Poco::Data::BLOB & val
);
Prepares a BLOB.
void prepare(
std::size_t pos,
const std::vector < Poco::Data::BLOB > & val
);
Prepares a BLOB vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Data::BLOB > & val
);
Prepares a BLOB deque.
void prepare(
std::size_t pos,
const std::list < Poco::Data::BLOB > & val
);
Prepares a BLOB list.
void prepare(
std::size_t pos,
const Poco::Data::CLOB & val
);
Prepares a CLOB.
void prepare(
std::size_t pos,
const std::vector < Poco::Data::CLOB > & val
);
Prepares a CLOB vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Data::CLOB > & val
);
Prepares a CLOB deque.
void prepare(
std::size_t pos,
const std::list < Poco::Data::CLOB > & val
);
Prepares a CLOB list.
void prepare(
std::size_t pos,
const Poco::Data::Date & val
);
Prepares a Date.
void prepare(
std::size_t pos,
const std::vector < Poco::Data::Date > & val
);
Prepares a Date vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Data::Date > & val
);
Prepares a Date deque.
void prepare(
std::size_t pos,
const std::list < Poco::Data::Date > & val
);
Prepares a Date list.
void prepare(
std::size_t pos,
const Poco::Data::Time & val
);
Prepares a Time.
void prepare(
std::size_t pos,
const std::vector < Poco::Data::Time > & val
);
Prepares a Time vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Data::Time > & val
);
Prepares a Time deque.
void prepare(
std::size_t pos,
const std::list < Poco::Data::Time > & val
);
Prepares a Time list.
void prepare(
std::size_t pos,
const Poco::DateTime & val
);
Prepares a DateTime.
void prepare(
std::size_t pos,
const std::vector < Poco::DateTime > & val
);
Prepares a DateTime vector.
void prepare(
std::size_t pos,
const std::deque < Poco::DateTime > & val
);
Prepares a DateTime deque.
void prepare(
std::size_t pos,
const std::list < Poco::DateTime > & val
);
Prepares a DateTime list.
void prepare(
std::size_t pos,
const Poco::Any & val
);
Prepares an Any.
void prepare(
std::size_t pos,
const std::vector < Poco::Any > & val
);
Prepares an Any vector.
void prepare(
std::size_t pos,
const std::deque < Poco::Any > & val
);
Prepares an Any deque.
void prepare(
std::size_t pos,
const std::list < Poco::Any > & val
);
Prepares an Any list.
void prepare(
std::size_t pos,
const Poco::DynamicAny & val
);
Prepares a DynamicAny.
void prepare(
std::size_t pos,
const std::vector < Poco::DynamicAny > & val
);
Prepares a DynamicAny vector.
void prepare(
std::size_t pos,
const std::deque < Poco::DynamicAny > & val
);
Prepares a DynamicAny deque.
void prepare(
std::size_t pos,
const std::list < Poco::DynamicAny > & val
);
Prepares a DynamicAny list.
void setDataExtraction(
DataExtraction ext
);
Set data extraction mode.
void setMaxFieldSize(
std::size_t size
);
Sets maximum supported field size.