ABACS – биллинговая система
 Главная   Новости   О системе   Статьи   ABACS Inside   Поддержка   Контактная информация   Карта сайта 
Модуль «drmf_db» (Объекты для sql-запросов, выполнение соединений с БД)

Файл определений "drmf_db.def"



module drmf_db;
	void	Dbase_Init();
	void	Dbase_Done();
	bool	Dbase_Connect_Abacs();
	bool	Dbase_IsConnected_Abacs();
	void	Dbase_Disconnect_Abacs();
	bool	Dbase_Connect_IC();
	bool	Dbase_IsConnected_IC();
	void	Dbase_Disconnect_IC();
	void	Dbase_Transact_Abacs();
	void	Dbase_Transact_IC();
	void	Dbase_Rollback_Abacs();
	void	Dbase_Rollback_IC();
	void	Dbase_Commit_Abacs();
	void	Dbase_Commit_IC();
	bool	Dbase_InTransact_Abacs();
	bool	Dbase_InTransact_IC();
	bool	Dbase_CreateQueries_Abacs( string dbname );
	void	Dbase_DestroyQueries_Abacs();
	bool	Dbase_CreateQueries_IC( int dbhandle );
	void	Dbase_DestroyQueries_IC();
	int	Dbase_HQuery_COpen();
	int	Dbase_HQuery_CExec();
	int	Dbase_HQuery_CFree();
	int	Dbase_HQuery_AOpen();
	int	Dbase_HQuery_AExec();
	int	Dbase_HQuery_AFree();
//---------------------- Конец файла --------------------------

Файл кода "drmf_db.src"




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 );
}
//---------------------- Конец файла --------------------------


Список файлов проекта «DRMF»  


Примеры:

 


Подробнее об «ABACS»  


Яндекс.Метрика