fintp_udal
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FinTP::Database Class Referenceabstract

Main database functional class. More...

#include <Database.h>

Inheritance diagram for FinTP::Database:

Public Member Functions

 Database ()
 
virtual ~Database ()
 
virtual void BeginTransaction (const bool readonly)=0
 Starts a transaction. More...
 
void BeginTransaction ()
 
virtual void EndTransaction (const TransactionType::TRANSACTION_TYPE transactionType, const bool throwOnError)=0
 Ends a transaction. More...
 
void EndTransaction (const TransactionType::TRANSACTION_TYPE transactionType)
 
virtual void Connect (const ConnectionString &connectionString)=0
 Connects using the given connection string. More...
 
virtual void Disconnect ()=0
 Disconnects and release connection resources. More...
 
virtual bool IsConnected ()=0
 Query if Database instance is connected. More...
 
virtual void ExecuteNonQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, bool onCursor)=0
 ExecuteQuery method Execute NonQuery (Insert, Update, Delete) SQL statements or stored procedures. More...
 
void ExecuteNonQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement)
 
virtual void ExecuteNonQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, bool onCursor)=0
 ExecuteQuery method Execute NonQuery (Insert, Update, Delete) SQL statements or stored procedures, cached in Database instance. More...
 
void ExecuteNonQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement)
 
virtual void ExecuteNonQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters, bool onCursor)=0
 ExecuteQuery method Execute NonQuery (Insert, Update, Delete) SQL statements or stored procedures. More...
 
void ExecuteNonQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters)
 
virtual void ExecuteNonQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters, bool onCursor)=0
 ExecuteQuery method Execute NonQuery (Insert, Update, Delete) SQL statements or stored procedures, cached in Database instance. More...
 
void ExecuteNonQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters)
 
virtual DataSetExecuteQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, bool holdCursor, const unsigned int fetchRows)=0
 ExecuteQuery method Execute Select SQL statements or stored procedures. More...
 
DataSetExecuteQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, bool holdCursor)
 
DataSetExecuteQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement)
 
virtual DataSetExecuteQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const bool holdCursor, const unsigned int fetchRows)=0
 ExecuteQuery method Execute Select SQL statements or stored procedures, cached in Database instance. More...
 
DataSetExecuteQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, bool holdCursor)
 
DataSetExecuteQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement)
 
virtual DataSetExecuteQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters, bool holdCursor, const unsigned int fetchRows)=0
 Execute Select SQL statements or stored procedures. More...
 
DataSetExecuteQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters, bool holdCursor)
 
DataSetExecuteQuery (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters)
 
virtual DataSetExecuteQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters, const bool holdCursor, const unsigned int fetchRows)=0
 Execute Select SQL statements or stored procedures. More...
 
DataSetExecuteQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters, bool holdCursor)
 
DataSetExecuteQueryCached (const DataCommand::COMMAND_TYPE commandType, const string &stringStatement, const ParametersVector &vectorOfParameters)
 
virtual void ReleaseCursor (const bool checkConn)=0
 If onCursor=true is passed to ExecuteQuery methods, a client is required to use these methods to release cursor resources. More...
 
void ReleaseCursor ()
 
virtual bool CursorHeld () const
 Determines if we can hold the cursor. More...
 
virtual void RewindCursor ()=0
 Rewind cursor to the first position. More...
 
int getLastNumberofAffectedRows () const
 

Static Public Member Functions

static void DisplayDataSet (const DataSet *theDataSet)
 Utility method used to pretty print DataSet objects. More...
 
static
XERCES_CPP_NAMESPACE_QUALIFIER
DOMDocument * 
ConvertToXML (const DataSet *theDataSet, const bool doTrimm=true)
 Utility method that converts DataSet parameter objects to following XML format: <TableName> <Record> <Column_Name_n>Column_Value_n<Column_Name_n> </Record> </TableName> More...
 

Static Public Attributes

static string DateFormat = "DD.MM.YYYY"
 Used to convert a date/timestamp column to a string format database specific formats. More...
 
static string TimestampFormat = "DD.MM.YYYY HH:MI"
 

Protected Attributes

CacheManager< string, DataCommandm_StatementCache
 Collection to hold already executed Command instances. More...
 
string m_LastErrorCode
 The last error code returned from command execution. More...
 
unsigned int m_LastNumberofAffectedRows
 The number of updates last command performed. More...
 

Detailed Description

Main database functional class.

Its purpose is to provide a common interface to operate over different database specific APIs. Database usage consists on making the following sequenced calls to Database class methods

  1. First a new Database instace is obtained from factory,
  2. Then, the client can easily connect to database storage by calling the Connect() method. The connection can be tested any time during the instace lifecycle using isConnected() method
  3. If database connection is up the client needs to spawn a new database transaction by calling BeginTransaction(readonly) method
  4. Transactions comprise one ore more calls to "ExecuteQuery" methods. Every database query is mapped to a Command instance and can be cached in m_StatementCache member of Database instance
  5. A transaction ends when the client calls EndTransaction(transactionType) performing commit or rollback on the current transaction
  6. The database connection is released when Disconect()

Database declare two types of "ExecuteQuery" methods

  • ExecuteQuery - Create a DataCommand from passed parameters and execute it
  • ExecuteQueryChached - Additionally, attempts to retrieve the params and resultset columns from DataCommand cache or adds them if not available

Database, define four library specific exception types to be used by its implementations

Constructor & Destructor Documentation

Database::Database ( )
Database::~Database ( )
virtual

Member Function Documentation

virtual void FinTP::Database::BeginTransaction ( const bool  readonly)
pure virtual

Starts a transaction.

Parameters
readonly= true if no Inserts/Updates are intended

Implemented in FinTP::ODBCDatabase, FinTP::OracleDatabase, FinTP::InformixDatabase, and FinTP::SqlServerDatabase.

void FinTP::Database::BeginTransaction ( )
inline
virtual void FinTP::Database::Connect ( const ConnectionString connectionString)
pure virtual

Connects using the given connection string.

Parameters
connectionString.Connection information nedeed to connect to DBMS.

Implemented in FinTP::ODBCDatabase, and FinTP::OracleDatabase.

XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * Database::ConvertToXML ( const DataSet theDataSet,
const bool  doTrimm = true 
)
static

Utility method that converts DataSet parameter objects to following XML format: <TableName> <Record> <Column_Name_n>Column_Value_n<Column_Name_n> </Record> </TableName>

Parameters
theDataSetThe DataSet to be converted.
doTrimm(optional) Do trimming on db fields values.
Returns
null if it fails, else the given data converted to an XML. Throws if *theDataSet=NULL
virtual bool FinTP::Database::CursorHeld ( ) const
inlinevirtual

Determines if we can hold the cursor.

Returns
true if cursor is held , false if not.

Reimplemented in FinTP::ODBCDatabase.

virtual void FinTP::Database::Disconnect ( )
pure virtual

Disconnects and release connection resources.

Implemented in FinTP::ODBCDatabase, and FinTP::OracleDatabase.

void Database::DisplayDataSet ( const DataSet theDataSet)
static

Utility method used to pretty print DataSet objects.

Parameters
theDataSetThe data set to print.
virtual void FinTP::Database::EndTransaction ( const TransactionType::TRANSACTION_TYPE  transactionType,
const bool  throwOnError 
)
pure virtual

Ends a transaction.

Parameters
transactionTypeTransactionType option to close transaction
throwOnErrorBool flag to inhibit exception throwing on error.
Note
why wish not to throw exception

Implemented in FinTP::ODBCDatabase, FinTP::OracleDatabase, FinTP::InformixDatabase, and FinTP::SqlServerDatabase.

void FinTP::Database::EndTransaction ( const TransactionType::TRANSACTION_TYPE  transactionType)
inline
virtual void FinTP::Database::ExecuteNonQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
bool  onCursor 
)
pure virtual

ExecuteQuery method Execute NonQuery (Insert, Update, Delete) SQL statements or stored procedures.

Executed statement is not parameterized

Parameters
commandTypeType of the command.
stringStatementThe string statement.
onCursortrue to on cursor.

Implemented in FinTP::ODBCDatabase, and FinTP::OracleDatabase.

void FinTP::Database::ExecuteNonQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement 
)
inline
virtual void FinTP::Database::ExecuteNonQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters,
bool  onCursor 
)
pure virtual

ExecuteQuery method Execute NonQuery (Insert, Update, Delete) SQL statements or stored procedures.

Executed statement is parameterized

Parameters
commandTypeType of the command.
stringStatementThe string statement.
vectorOfParametersVector of parameters that are bound to the SQL statement.
onCursortrue to on cursor.

Implemented in FinTP::ODBCDatabase, and FinTP::OracleDatabase.

void FinTP::Database::ExecuteNonQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters 
)
inline
virtual void FinTP::Database::ExecuteNonQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
bool  onCursor 
)
pure virtual

ExecuteQuery method Execute NonQuery (Insert, Update, Delete) SQL statements or stored procedures, cached in Database instance.

Executed statement is not parameterized

Parameters
commandTypeType of the command.
stringStatementThe string statement.
onCursortrue to on cursor.

Implemented in FinTP::ODBCDatabase, and FinTP::OracleDatabase.

void FinTP::Database::ExecuteNonQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement 
)
inline
virtual void FinTP::Database::ExecuteNonQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters,
bool  onCursor 
)
pure virtual

ExecuteQuery method Execute NonQuery (Insert, Update, Delete) SQL statements or stored procedures, cached in Database instance.

Executed statement is parameterized

Parameters
commandTypeType of the command.
stringStatementThe string statement.
vectorOfParametersVector of parameters that are bound to the SQL statement.
onCursortrue to on cursor.

Implemented in FinTP::ODBCDatabase, and FinTP::OracleDatabase.

void FinTP::Database::ExecuteNonQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters 
)
inline
virtual DataSet* FinTP::Database::ExecuteQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
bool  holdCursor,
const unsigned int  fetchRows 
)
pure virtual

ExecuteQuery method Execute Select SQL statements or stored procedures.

The statement is not parametrized nor cached in Database instance

Parameters
commandTypeType of the command.
stringStatementThe string statement.
holdCursortrue to hold cursor.
fetchRowsThe number of fetched rows.
Returns
Fetched rows as DataSet pointer; throw runtime_error if fails

Implemented in FinTP::OracleDatabase, FinTP::ODBCDatabase, and FinTP::PostgresDatabase.

DataSet* FinTP::Database::ExecuteQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
bool  holdCursor 
)
inline
DataSet* FinTP::Database::ExecuteQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement 
)
inline
virtual DataSet* FinTP::Database::ExecuteQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters,
bool  holdCursor,
const unsigned int  fetchRows 
)
pure virtual

Execute Select SQL statements or stored procedures.

The statement is parametrized

Parameters
commandTypeType of the command.
stringStatementThe string statement.
vectorOfParametersVector of parameters that are bound to the SQL statement.
holdCursortrue to hold cursor.
fetchRowsThe fetch rows.
Returns
Fetched rows as DataSet pointer; throw runtime_error if fails

Implemented in FinTP::OracleDatabase, FinTP::ODBCDatabase, and FinTP::PostgresDatabase.

DataSet* FinTP::Database::ExecuteQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters,
bool  holdCursor 
)
inline
DataSet* FinTP::Database::ExecuteQuery ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters 
)
inline
virtual DataSet* FinTP::Database::ExecuteQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const bool  holdCursor,
const unsigned int  fetchRows 
)
pure virtual

ExecuteQuery method Execute Select SQL statements or stored procedures, cached in Database instance.

Parameters
commandTypeType of the command.
stringStatementThe string statement.
holdCursorThe hold cursor.
fetchRowsThe fetch rows.
Returns
Fetched rows as DataSet pointer or throw runtime_error if fails

Implemented in FinTP::OracleDatabase, FinTP::ODBCDatabase, and FinTP::PostgresDatabase.

DataSet* FinTP::Database::ExecuteQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
bool  holdCursor 
)
inline
DataSet* FinTP::Database::ExecuteQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement 
)
inline
virtual DataSet* FinTP::Database::ExecuteQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters,
const bool  holdCursor,
const unsigned int  fetchRows 
)
pure virtual

Execute Select SQL statements or stored procedures.

The SQL statement is parameterized and cached

Parameters
commandTypeType of the command.
stringStatementThe string statement.
vectorOfParametersVector of parameters that are bound to the SQL statement.
holdCursorThe hold cursor.
fetchRowsThe fetch rows.
Returns
Fetched rows as DataSet pointer; throw runtime_error if fails

Implemented in FinTP::OracleDatabase, FinTP::ODBCDatabase, and FinTP::PostgresDatabase.

DataSet* FinTP::Database::ExecuteQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters,
bool  holdCursor 
)
inline
DataSet* FinTP::Database::ExecuteQueryCached ( const DataCommand::COMMAND_TYPE  commandType,
const string &  stringStatement,
const ParametersVector vectorOfParameters 
)
inline
int FinTP::Database::getLastNumberofAffectedRows ( ) const
inline
virtual bool FinTP::Database::IsConnected ( )
pure virtual

Query if Database instance is connected.

Returns
true if connected, false if not.

Implemented in FinTP::ODBCDatabase, FinTP::OracleDatabase, and FinTP::InformixDatabase.

virtual void FinTP::Database::ReleaseCursor ( const bool  checkConn)
pure virtual

If onCursor=true is passed to ExecuteQuery methods, a client is required to use these methods to release cursor resources.

Parameters
checkConntrue to check connection.

Implemented in FinTP::OracleDatabase, and FinTP::ODBCDatabase.

void FinTP::Database::ReleaseCursor ( )
inline
virtual void FinTP::Database::RewindCursor ( )
pure virtual

Rewind cursor to the first position.

Implemented in FinTP::OracleDatabase, and FinTP::ODBCDatabase.

Member Data Documentation

string Database::DateFormat = "DD.MM.YYYY"
static

Used to convert a date/timestamp column to a string format database specific formats.

string FinTP::Database::m_LastErrorCode
protected

The last error code returned from command execution.

unsigned int FinTP::Database::m_LastNumberofAffectedRows
protected

The number of updates last command performed.

CacheManager< string, DataCommand > FinTP::Database::m_StatementCache
protected

Collection to hold already executed Command instances.

string Database::TimestampFormat = "DD.MM.YYYY HH:MI"
static

The documentation for this class was generated from the following files: