module drmf_db;
import system;
import stdio;
import kitcomp;
import AccessToConnects;
import QDbCtrl;
import drmf_log;
using module system;
using module stdio;
using module kitcomp;
using module AccessToConnects;
using module QDbCtrl;
using module drmf_log;
cQuery QueAbacsOpen, QueAbacsExec, QueAbacsFree;
int hQueAOpen, hQueAExec, hQueAFree;
int hQueCOpen, hQueCExec, hQueCFree;
int hDbIConnect, hDbAbacs;
//------------------------------------------------------------
// Функция конструктора и инициализации данных
//------------------------------------------------------------
void Dbase_Init()
{
InitRepository();
qdbModuleInit();
hQueAOpen = 0; hQueAExec = 0; hQueAFree = 0;
hQueCOpen = 0; hQueCExec = 0; hQueCFree = 0;
hDbIConnect = 0; hDbAbacs = 0;
}
//------------------------------------------------------------
// Функция деструктора
//------------------------------------------------------------
void Dbase_Done()
{
if ( qdbModuleReady() ) qdbModuleDone();
CloseRepository();
}
//------------------------------------------------------------
// Установить соединение с базой данных биллинга
//------------------------------------------------------------
bool Dbase_Connect_Abacs()
{
bool fres = false; int hnd;
Dbase_Disconnect_Abacs();
fres = Dbase_CreateQueries_Abacs( "This Database Name" );
if ( fres ) {
hDbAbacs = qdbCreateConnection();
fres = ( hDbAbacs != 0 );
if ( fres ) {
hnd = qdbQueryDatabasePointer( hQueAOpen );
fres = ( hnd != 0 );
if ( fres ) {
qdbUseExternalConnection( hDbAbacs, hnd );
fres = qdbStateConnection( hDbAbacs );
if ( !fres ) fres = qdbOpenConnection( hDbAbacs );
}
}
}
if ( !fres ) Dbase_Disconnect_Abacs();
return( fres );
}
//------------------------------------------------------------
// Проверить состояние соединения с базой данных биллинга
//------------------------------------------------------------
bool Dbase_IsConnected_Abacs()
{
return( qdbStateConnection( hDbAbacs ) );
}
//------------------------------------------------------------
// "Разорвать" соединение с базой данных биллинга
//------------------------------------------------------------
void Dbase_Disconnect_Abacs()
{
Dbase_DestroyQueries_Abacs();
if ( hDbAbacs != 0 ) {
qdbDeleteConnection( hDbAbacs );
hDbAbacs = 0;
}
DisconnectBase( "This Database Name" );
}
//------------------------------------------------------------
// Установить соединение с базой данных о вызовах
//------------------------------------------------------------
bool Dbase_Connect_IC()
{
bool fres = false;
Dbase_Disconnect_IC();
hDbIConnect = qdbCreateConnection();
if ( hDbIConnect == 0 ) return( fres );
qdbUseExternalConnection( hDbIConnect, acGetPointerBaseConnects() );
fres = qdbStateConnection( hDbIConnect );
if ( !fres ) fres = qdbOpenConnection( hDbIConnect );
if ( fres ) {
fres = Dbase_CreateQueries_IC( hDbIConnect );
if ( !fres ) Dbase_Disconnect_IC();
}
return( fres );
}
//------------------------------------------------------------
// Проверить состояние соединения с базой данных о вызовах
//------------------------------------------------------------
bool Dbase_IsConnected_IC()
{
return( qdbStateConnection( hDbIConnect )||acGetStateBaseConnects() );
}
//------------------------------------------------------------
// "Разорвать" соединение с базой данных о вызовах
//------------------------------------------------------------
void Dbase_Disconnect_IC()
{
Dbase_DestroyQueries_IC();
if ( acGetStateBaseConnects() ) acDisconnectBaseConnects();
if ( hDbIConnect != 0 ) {
qdbCloseConnection( hDbIConnect );
qdbDeleteConnection( hDbIConnect );
}
hDbIConnect = 0;
}
//------------------------------------------------------------
// Запустить транзакцию для SQL-запросов (БД биллинга)
//------------------------------------------------------------
void Dbase_Transact_Abacs()
{
qdbTransaction( hDbAbacs );
}
//------------------------------------------------------------
// Запустить транзакцию для SQL-запросов (БД о вызовах)
//------------------------------------------------------------
void Dbase_Transact_IC()
{
qdbTransaction( hDbIConnect );
}
//------------------------------------------------------------
// Отменить операции в последней транзакции (БД биллинга)
//------------------------------------------------------------
void Dbase_Rollback_Abacs()
{
qdbRollback( hDbAbacs );
}
//------------------------------------------------------------
// Отменить операции в последней транзакции (БД о вызовах)
//------------------------------------------------------------
void Dbase_Rollback_IC()
{
qdbRollback( hDbIConnect );
}
//------------------------------------------------------------
// Подтвердить операции в последней транзакции (БД биллинга)
//------------------------------------------------------------
void Dbase_Commit_Abacs()
{
qdbCommit( hDbAbacs );
}
//------------------------------------------------------------
// Подтвердить операции в последней транзакции (БД о вызовах)
//------------------------------------------------------------
void Dbase_Commit_IC()
{
qdbCommit( hDbIConnect );
}
//------------------------------------------------------------
// Проверить статус транзакции (БД биллинга)
//------------------------------------------------------------
bool Dbase_InTransact_Abacs()
{
return( qdbStateTransaction( hDbAbacs ) );
}
//------------------------------------------------------------
// Проверить статус транзакции (БД о вызовах)
//------------------------------------------------------------
bool Dbase_InTransact_IC()
{
return( qdbStateTransaction( hDbIConnect ) );
}
//------------------------------------------------------------
// Создать объекты запросов для операций с БД биллинга
// Предполагается создание объектов с условным названием:
// QueAOpen, QueAExec, QueAFree
//------------------------------------------------------------
bool Dbase_CreateQueries_Abacs( string dbname )
{
bool fres = false;
Dbase_DestroyQueries_Abacs();
QueAbacsOpen.Hnd = CreateQuery( QueAbacsOpen.pQuery, "QueryAbacsOpen", dbname );
QueAbacsExec.Hnd = CreateQuery( QueAbacsExec.pQuery, "QueryAbacsExec", dbname );
QueAbacsFree.Hnd = CreateQuery( QueAbacsFree.pQuery, "QueryAbacsFree", dbname );
fres = ( QueAbacsOpen.Hnd != 0 )&&( QueAbacsExec.Hnd != 0 )&&( QueAbacsFree.Hnd != 0 );
if ( !fres ) return( fres );
hQueAOpen = qdbCreateQuery();
hQueAExec = qdbCreateQuery();
hQueAFree = qdbCreateQuery();
fres = ( hQueAOpen != 0 )&&( hQueAExec != 0 )&&( hQueAFree != 0 );
if ( fres ) {
qdbUseExternalQuery( hQueAOpen, PointerVCLObject( QueAbacsOpen.Hnd ) );
qdbUseExternalQuery( hQueAExec, PointerVCLObject( QueAbacsExec.Hnd ) );
qdbUseExternalQuery( hQueAFree, PointerVCLObject( QueAbacsFree.Hnd ) );
}
if ( !fres ) Dbase_DestroyQueries_IC();
return( fres );
}
//------------------------------------------------------------
// Удалить объекты запросов (для БД биллинга)
//------------------------------------------------------------
void Dbase_DestroyQueries_Abacs()
{
if ( hQueAOpen != 0 ) qdbDeleteQuery( hQueAOpen );
if ( hQueAExec != 0 ) qdbDeleteQuery( hQueAExec );
if ( hQueAFree != 0 ) qdbDeleteQuery( hQueAFree );
hQueAOpen = 0;
hQueAExec = 0;
hQueAFree = 0;
}
//------------------------------------------------------------
// Создать объекты запросов для операций с БД о вызовах
// Предполагается создание объектов с условным названием:
// QueCOpen, QueCExec, QueCFree
//------------------------------------------------------------
bool Dbase_CreateQueries_IC( int dbhandle )
{
bool fres = false;
Dbase_DestroyQueries_IC();
hQueCOpen = qdbCreateQuery();
hQueCExec = qdbCreateQuery();
hQueCFree = qdbCreateQuery();
fres = ( hQueCOpen != 0 )&&( hQueCExec != 0 )&&( hQueCFree != 0 );
if ( fres ) {
qdbSwitchConnection( hQueCOpen, dbhandle );
qdbSwitchConnection( hQueCExec, dbhandle );
qdbSwitchConnection( hQueCFree, dbhandle );
}
if ( !fres ) Dbase_DestroyQueries_IC();
return( fres );
}
//------------------------------------------------------------
// Удалить объекты запросов (для БД о вызовах)
//------------------------------------------------------------
void Dbase_DestroyQueries_IC()
{
if ( hQueCOpen != 0 ) qdbDeleteQuery( hQueCOpen );
if ( hQueCExec != 0 ) qdbDeleteQuery( hQueCExec );
if ( hQueCFree != 0 ) qdbDeleteQuery( hQueCFree );
hQueCOpen = 0;
hQueCExec = 0;
hQueCFree = 0;
}
//------------------------------------------------------------
// Вернуть внутр.номер объекта запроса QueCOpen
//------------------------------------------------------------
int Dbase_HQuery_COpen()
{
return( hQueCOpen );
}
//------------------------------------------------------------
// Вернуть внутр.номер объекта запроса QueCExec
//------------------------------------------------------------
int Dbase_HQuery_CExec()
{
return( hQueCExec );
}
//------------------------------------------------------------
// Вернуть внутр.номер объекта запроса QueCFree
//------------------------------------------------------------
int Dbase_HQuery_CFree()
{
return( hQueCFree );
}
//------------------------------------------------------------
// Вернуть внутр.номер объекта запроса QueAOpen
//------------------------------------------------------------
int Dbase_HQuery_AOpen()
{
return( hQueAOpen );
}
//------------------------------------------------------------
// Вернуть внутр.номер объекта запроса QueAExec
//------------------------------------------------------------
int Dbase_HQuery_AExec()
{
return( hQueAExec );
}
//------------------------------------------------------------
// Вернуть внутр.номер объекта запроса QueAFree
//------------------------------------------------------------
int Dbase_HQuery_AFree()
{
return( hQueAFree );
}
//---------------------- Конец файла --------------------------
|