|
#include <PoolDatabaseConnection.h>
Public Member Functions | |
| void | open (const String &connectionString="") |
| void | close () |
| virtual bool | active () const |
| virtual DBHandle | handle () const |
| const DatabaseConnectionString & | connectionString () const |
| void | connectionString (const DatabaseConnectionString &connectionString) |
| virtual String | nativeConnectionString () const |
| virtual DatabaseConnectionType | connectionType () const |
| virtual String | driverDescription () const |
| void | beginTransaction () |
| void | commitTransaction () |
| void | rollbackTransaction () |
| bool | inTransaction () const |
| virtual void | objectList (DatabaseObjectType objectType, Strings &objects)=0 |
| void | bulkInsert (const String &tableName, const Strings &columnNames, const std::vector< VariantVector > &data) |
| void | executeBatchFile (const String &batchFileName, Strings *errors=nullptr) |
| void | executeBatchSQL (const sptk::Strings &batchSQL, Strings *errors=nullptr) |
Protected Member Functions | |
| bool | getInTransaction () const |
| void | setInTransaction (bool inTransaction) |
| PoolDatabaseConnection (const String &connectionString, DatabaseConnectionType connectionType, std::chrono::seconds connectTimeout) | |
| PoolDatabaseConnection (const PoolDatabaseConnection &)=delete | |
| PoolDatabaseConnection (PoolDatabaseConnection &&) noexcept=default | |
| PoolDatabaseConnection & | operator= (const PoolDatabaseConnection &)=delete |
| PoolDatabaseConnection & | operator= (PoolDatabaseConnection &&) noexcept=default |
| virtual void | _openDatabase (const String &connectionString) |
| virtual void | closeDatabase () |
| virtual void | driverBeginTransaction () |
| virtual void | driverEndTransaction (bool commit) |
| virtual void | _bulkInsert (const String &tableName, const Strings &columnNames, const std::vector< VariantVector > &data) |
| virtual void | _executeBatchFile (const String &batchFileName, Strings *errors) |
| virtual void | _executeBatchSQL (const sptk::Strings &batchSQL, Strings *errors) |
| virtual void | connectionType (DatabaseConnectionType connType) |
| void | bulkInsertRecords (const String &tableName, const Strings &columnNames, const std::vector< VariantVector >::const_iterator &begin, const std::vector< VariantVector >::const_iterator &end) |
| std::chrono::seconds | connectTimout () const |
Protected Member Functions inherited from sptk::PoolDatabaseConnectionQueryMethods | |
| void | querySetStmt (Query *q, SStmtHandle stmt) |
| virtual String | queryError (const Query *query) const =0 |
| virtual void | queryAllocStmt (Query *query)=0 |
| virtual void | queryFreeStmt (Query *query)=0 |
| virtual void | queryCloseStmt (Query *query)=0 |
| virtual void | queryPrepare (Query *query)=0 |
| virtual void | queryExecute (Query *query)=0 |
| virtual int | queryColCount (Query *query)=0 |
| virtual void | queryColAttributes (Query *query, int16_t column, int16_t descType, int32_t &value)=0 |
| virtual void | queryColAttributes (Query *query, int16_t column, int16_t descType, char *buff, int len)=0 |
| virtual void | queryBindParameters (Query *query)=0 |
| virtual void | queryOpen (Query *query)=0 |
| virtual void | queryFetch (Query *query)=0 |
| virtual String | paramMark (unsigned paramIndex) |
| void | notImplemented (const String &methodName) const |
| bool | linkQuery (Query *q) |
| bool | unlinkQuery (Query *q) |
| void | disconnectAllQueries () |
Static Protected Member Functions | |
| static void | logAndThrow (const String &method, const String &error) |
Static Protected Member Functions inherited from sptk::PoolDatabaseConnectionQueryMethods | |
| static void | querySetPrepared (Query *q, bool pf) |
| static void | querySetActive (Query *q, bool af) |
| static void | querySetEof (Query *q, bool eof) |
Friends | |
| class | Query |
| class | QueryStatementManagement |
Database connector
Implements a thread-safe connection to generDOT_al database. It is used as a base class for actual database driver classes.
|
explicitprotected |
Constructor
Protected constructor prevents creating an instance of the DatabaseConnection. Instead, it is possible to create an instance of derived classes.
| connectionString | The connection string |
|
protectedvirtual |
Executes bulk inserts of data from memory buffer
Data is inserted the fastest possible way. The server-specific format definition provides extra information about data. If format is empty than default server-specific data format is used. For instance, for PostgreSQL it is TAB-delimited data, with some escaped characters ('\t', '\n', '\r') and "\\N" for NULLs.
| tableName | Table name to insert into |
| columnNames | List of table columns to populate |
| data | Data for bulk insert |
|
protectedvirtual |
Executes SQL batch file
Queries are executed in not prepared mode. Syntax of the SQL batch file is matching the native for the database.
| batchFileName | SQL batch file |
| errors | Errors during execution. If provided, then errors are stored here, instead of exceptions |
|
protectedvirtual |
Executes SQL batch queries
Queries are executed in not prepared mode. Syntax of the SQL batch file is matching the native for the database.
| batchSQL | SQL batch file |
| errors | Errors during execution. If provided, then errors are stored here, instead of exceptions |
|
protectedvirtual |
Opens the database connection.
This method should be overwritten in derived classes
| connectionString | The ODBC connection string |
|
virtual |
Returns true if database is opened
| void sptk::PoolDatabaseConnection::beginTransaction | ( | ) |
Begins the transaction
|
inline |
Executes bulk inserts of data from memory buffer
Data is inserted the fastest possible way. The server-specific format definition provides extra information about data. If format is empty than default server-specific data format is used. For instance, for PostgreSQL it is TAB-delimited data, with some escaped characters ('\t', '\n', '\r') and "\\N" for NULLs.
| tableName | Table name to insert into |
| columnNames | List of table columns to populate |
| data | Data for bulk insert |
|
protected |
Create and execute single query to insert multiple records
| tableName | Table name |
| columnNames | Column names |
| begin | Data rows begin iterator |
| end | Data rows end iterator (not included into query) |
| void sptk::PoolDatabaseConnection::close | ( | ) |
Closes the database connection. If unsuccessful throws an exception.
|
protectedvirtual |
Closes the database connection.
This method should be overwritten in derived classes
| void sptk::PoolDatabaseConnection::commitTransaction | ( | ) |
Commits the transaction
|
inline |
Returns the connection string
| void sptk::PoolDatabaseConnection::connectionString | ( | const DatabaseConnectionString & | connectionString | ) |
Set connecting string
| connectionString | Connection string |
|
inlinevirtual |
Returns the connection type
|
inlineprotectedvirtual |
Set the connection type
|
inlineprotected |
Return connection timeout
|
protectedvirtual |
Begins the transaction
This method should be implemented in derived driver
|
inlinevirtual |
Returns the driver description
|
protectedvirtual |
Ends the transaction
This method should be implemented in derived driver
| commit | Commit if true, rollback if false |
|
inline |
Executes SQL batch file
Queries are executed in not prepared mode. Syntax of the SQL batch file is matching the native for the database.
| batchFileName | SQL batch file |
| errors | Errors during execution. If provided, then errors are stored here, instead of exceptions |
|
inline |
Executes SQL batch queries
Queries are executed in not prepared mode. Syntax of the SQL batch file is matching the native for the database.
| batchSQL | SQL batch file |
| errors | Errors during execution. If provided, then errors are stored here, instead of exceptions |
|
virtual |
Returns the database connection handle
|
inline |
Reports true if in transaction
|
staticprotected |
Throws an exception
Before exception is thrown, it is logged into the logfile (if the logfile is defined)
| method | Method name where error has occured |
| error | Error text |
|
inlinevirtual |
Returns driver-specific connection string
|
pure virtual |
Lists database objects
Not implemented in DatabaseConnection. The derived database class must provide its own implementation
| objectType | Object type to list |
| objects | Object list (output) |
| void sptk::PoolDatabaseConnection::open | ( | const String & | connectionString = "" | ) |
Opens the database connection
If unsuccessful throws an exception.
| connectionString | The ODBC connection string |
| void sptk::PoolDatabaseConnection::rollbackTransaction | ( | ) |
Rolls back the transaction