Класс для работы с PostgreSQL. Подробнее...
#include <db/pg_database.h>
Базовые классы:nitro::Database.
Открытые члены | |
| PGDatabase (void) | |
| PGDatabase (const std::string &theConnectionString) | |
| void | Connect (const std::string &theConnectionString) |
| void | Disconnect (void) |
| void | Query (const std::string &theQueryString) |
| virtual std::size_t | RecordCount (void) |
| virtual std::size_t | FieldCount (void) |
| virtual const char * | GetRecordField (std::size_t i, std::size_t j) |
| virtual const char * | GetFieldName (std::size_t j) |
| virtual void | ClearResult (void) |
| virtual | ~PGDatabase () |
Закрытые члены | |
| PGDatabase (const PGDatabase &DBObject) | |
| PGDatabase | operator= (const PGDatabase &DBObject) |
Закрытые данные | |
| void * | Connection |
| void * | Result |
Класс для работы с PostgreSQL.
См. определение в файле pg_database.h строка 50
| nitro::PGDatabase::PGDatabase | ( | void | ) |
Конструктор.
| nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле pg_database.cpp строка 13
Перекрестные ссылки nitro::exception::code() и nitro::exception::what().
{
try
{
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::PGDatabase( void )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::PGDatabase( void )::An error occured" ) , 0 ) );
}
}

| nitro::PGDatabase::PGDatabase | ( | const std::string & | theConnectionString | ) |
Конструктор.
| theConnectionString | - Параметры подключения. |
| nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле pg_database.cpp строка 28
Перекрестные ссылки nitro::exception::code(), Connect() и nitro::exception::what().
{
try
{
Connect( theConnectionString );
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::PGDatabase( const std::string & theConnectionString )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::PGDatabase( const std::string & theConnectionString )::An error occured" ) , 0 ) );
}
}

| nitro::PGDatabase::~PGDatabase | ( | ) | [virtual] |
Деструктор.
См. определение в файле pg_database.cpp строка 111
Перекрестные ссылки Disconnect().
{
try
{
Disconnect();
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::~PGDatabase()::An error occured" ) , 0 ) );
}
}

| nitro::PGDatabase::PGDatabase | ( | const PGDatabase & | DBObject | ) | [inline, private] |
Закрытый конструктор копирования.
| DBObject | - объект базы данных. |
См. определение в файле pg_database.h строка 282
{}
| void nitro::PGDatabase::ClearResult | ( | void | ) | [virtual] |
Функция очистки результата.
| nitro::exception | Кидает исключение с описанием ошибки. |
Замещает nitro::Database.
См. определение в файле pg_database.cpp строка 187
Перекрестные ссылки nitro::exception::code(), Result и nitro::exception::what().
{
try
{
if( Result != NULL )
{
PQclear( ( PGresult * )Result );
Result = NULL;
}
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::ClearResult( void )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::ClearResult( void )::An error occured" ) , 0 ) );
}
}

| void nitro::PGDatabase::Connect | ( | const std::string & | theConnectionString | ) | [virtual] |
Подключение к базе данных.
| theConnectionString | - Параметры подключения. |
| nitro::exception | Кидает исключение с описанием ошибки. |
Переопределяет метод предка nitro::Database.
См. определение в файле pg_database.cpp строка 44
Перекрестные ссылки nitro::exception::code(), Connection, nitro::Parsers::GetCommandLineParameter(), Query() и nitro::exception::what().
Используется в PGDatabase().
{
try
{
Connection = ( void * )PQconnectdb( theConnectionString.c_str() );
if( PQstatus( ( PGconn * )Connection ) != CONNECTION_OK )
{
throw( nitro::exception( std::string( "An error occured while connecting to the server. Connection string : " ) + theConnectionString , 1 ) );
}
std::string CharacterSet( nitro::Parsers::GetCommandLineParameter( theConnectionString , std::string( "character_set" ) , std::string( "" ) ) );
if( !CharacterSet.empty() )
{
Query( std::string( "SET NAMES " ) + CharacterSet );
}
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::Connect( const std::string & theConnectionString )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::Connect( const std::string & theConnectionString )::An error occured" ) , 0 ) );
}
}

| void nitro::PGDatabase::Disconnect | ( | void | ) | [virtual] |
Отключение от базы данных.
| nitro::exception | Кидает исключение с описанием ошибки. |
Замещает nitro::Database.
См. определение в файле pg_database.cpp строка 95
Перекрестные ссылки nitro::exception::code(), Connection и nitro::exception::what().
Используется в ~PGDatabase().
{
try
{
PQfinish( ( PGconn * )Connection );
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::Disconnect( void )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::Disconnect( void )::An error occured" ) , 0 ) );
}
}

| std::size_t nitro::PGDatabase::FieldCount | ( | void | ) | [virtual] |
Функция получения количества полей.
| nitro::exception | Кидает исключение с описанием ошибки. |
Замещает nitro::Database.
См. определение в файле pg_database.cpp строка 139
Перекрестные ссылки nitro::exception::code(), Result и nitro::exception::what().
{
try
{
return( PQnfields( ( const PGresult * ) Result ) );
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::FieldCount( void )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::FieldCount( void )::An error occured" ) , 0 ) );
}
}

| const char * nitro::PGDatabase::GetFieldName | ( | std::size_t | j | ) | [virtual] |
Функция получения названия поля.
| j | - номер поля. |
| nitro::exception | Кидает исключение с описанием ошибки. |
Замещает nitro::Database.
См. определение в файле pg_database.cpp строка 171
Перекрестные ссылки nitro::exception::code(), Result и nitro::exception::what().
{
try
{
return( ( const char * )PQfname( ( const PGresult * ) Result , ( int )j ) );
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::GetFieldName( std::size_t j )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::GetFieldName( std::size_t j )::An error occured" ) , 0 ) );
}
}

| const char * nitro::PGDatabase::GetRecordField | ( | std::size_t | i, | |
| std::size_t | j | |||
| ) | [virtual] |
Функция получения значения поля.
| i | - номер записи. | |
| j | - номер поля. |
| nitro::exception | Кидает исключение с описанием ошибки. |
Замещает nitro::Database.
См. определение в файле pg_database.cpp строка 155
Перекрестные ссылки nitro::exception::code(), Result и nitro::exception::what().
{
try
{
return( ( const char * )PQgetvalue( ( const PGresult * ) Result , ( int )i , ( int )j ) );
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::GetRecordField( std::size_t i , std::size_t j )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::GetRecordField( std::size_t i , std::size_t j )::An error occured" ) , 0 ) );
}
}

| PGDatabase nitro::PGDatabase::operator= | ( | const PGDatabase & | DBObject | ) | [inline, private] |
Закрытый оператор присваивания.
| DBObject | - объект базы данных. |
См. определение в файле pg_database.h строка 298
{return( *this );}
| void nitro::PGDatabase::Query | ( | const std::string & | theQueryString | ) | [virtual] |
Выполнение запроса.
| theQueryString | - Запрос. |
| nitro::exception | Кидает исключение с описанием ошибки. |
Переопределяет метод предка nitro::Database.
См. определение в файле pg_database.cpp строка 72
Перекрестные ссылки nitro::exception::code(), Connection, Result и nitro::exception::what().
Используется в Connect().
{
try
{
Result = ( void * )PQexec( ( PGconn * )Connection , theQueryString.c_str() );
ExecStatusType Status( PQresultStatus( ( PGresult * )Result ) );
if( Status == PGRES_BAD_RESPONSE || Status == PGRES_NONFATAL_ERROR || Status == PGRES_FATAL_ERROR )
{
throw( nitro::exception( std::string( "An error occured while executing query " ) + theQueryString , 1 ) );
}
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::Query( const std::string & theQueryString )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::Query( const std::string & theQueryString )::An error occured" ) , 0 ) );
}
}

| std::size_t nitro::PGDatabase::RecordCount | ( | void | ) | [virtual] |
Функция получения количества записей.
| nitro::exception | Кидает исключение с описанием ошибки. |
Замещает nitro::Database.
См. определение в файле pg_database.cpp строка 123
Перекрестные ссылки nitro::exception::code(), Result и nitro::exception::what().
{
try
{
return( PQntuples( ( const PGresult * ) Result ) );
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "PGDatabase::RecordCount( void )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "PGDatabase::RecordCount( void )::An error occured" ) , 0 ) );
}
}

void* nitro::PGDatabase::Connection [private] |
Соединение.
См. определение в файле pg_database.h строка 310
Используется в Connect(), Disconnect() и Query().
void* nitro::PGDatabase::Result [private] |
Результат запроса.
См. определение в файле pg_database.h строка 322
Используется в ClearResult(), FieldCount(), GetFieldName(), GetRecordField(), Query() и RecordCount().
1.6.1