⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global.cpp

📁 自动从数据库上移动数据,,,采用ORACAL数据库.
💻 CPP
字号:
// Global.cpp: implementation of the CGlobal class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Aotu.h"
#include "Global.h"
#include "AdoManager.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

CGlobal global;
#define szIniFileName ".\\config.ini"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGlobal::CGlobal()
{
	memset(szConfigDB,0,sizeof(szConfigDB));
	memset(szConOracl,0,sizeof(szConOracl));
	memset(szConDM,0,sizeof(szConDM));
	
}

CGlobal::~CGlobal()
{
	if (m_adoDM.IsOpen())
		m_adoDM.CloseDb();
	if (m_adoOR.IsOpen())
		m_adoOR.CloseDb();
}

CGlobal::Init()
{
	//初始化任务链表
	char fullPath[1024]={0}; 
    GetModuleFileName(AfxGetInstanceHandle(), fullPath,sizeof(fullPath));
    char path_buffer[1024]={0};
	char drive[1024]={0};
	char dir[1024]={0};
	char fname[1024]={0};
	char ext[1024]={0};
	strcpy(path_buffer,fullPath);
	_splitpath( path_buffer, drive, dir, fname, ext);
    sprintf(szConfigDB,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s%s%s",drive,dir,"\\TASK.mdb");
    OpenConfigDB();
	
	//读配置文件
    char szUser[50]={0};
	char szPsw[50]={0};
	char szSource[50]={0};
	GetPrivateProfileString("ORACLEINFO","USERID","hbTrip",szUser,sizeof(szUser),szIniFileName);
	GetPrivateProfileString("ORACLEINFO","PASSWORD","hbTrip",szPsw,sizeof(szPsw),szIniFileName);
	GetPrivateProfileString("ORACLEINFO","DATASOURCE","hbTrip",szSource,sizeof(szSource),szIniFileName);
    
	//连接ORACL字符串
	sprintf(szConOracl,"Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=%s;Password=%s;Data Source=%s",szUser,szPsw,szSource);
    
	//读配置文件
	char szUserdm[50]={0};
	char szPswdm[50]={0};
	char szSourcedm[50]={0};
	char szSvrdm[50]={0};
	GetPrivateProfileString("DMDBDS","USERID","SYSDBA",szUserdm,sizeof(szUserdm),szIniFileName);
	GetPrivateProfileString("DMDBDS","PASSWORD","SYSDBA",szPswdm,sizeof(szPswdm),szIniFileName);
	GetPrivateProfileString("DMDBDS","DATASOURCE","SYSTEM",szSourcedm,sizeof(szSourcedm),szIniFileName);
	GetPrivateProfileString("DMDBDS","SVRNAME","127.0.0.1",szSvrdm,sizeof(szSvrdm),szIniFileName);
    
	//连接ORACL字符串
	//sprintf(szConDM,"Provider=DMOLEDB.1;Password=%s;Persist Security Info=True;User ID=%s;Initial Catalog=%s;Data Source=%s",szPswdm,szUserdm,szSourcedm,szSvrdm);
    //sprintf(szConDM,"Provider=DMOLEDB.1;Password=SYSDBA;Persist Security Info=True;User ID=SYSDBA;Initial Catalog=HBEGS_CXFW;Data Source=127.0.0.1");
	sprintf(szConDM,"Provider=DMOLEDB.1;Password=%s;Persist Security Info=True;User ID=%s;Initial Catalog=%s;Data Source=%s",szPswdm,szUserdm,szSourcedm,szSvrdm);
	
	iAutoFlag=GetPrivateProfileInt ("AOTUSTRAT", "AOTUFLAG",-1,szIniFileName);
	ConnDM();
	ConnOR();
}

CGlobal::OpenConfigDB()
{  
	//if (m_TaskList.IsEmpty())
	m_TaskListCs.Lock();
	m_TaskList.RemoveAll();
	m_TaskListCs.Unlock();
	CAdoManager m_ado;
	HRESULT hr=m_ado.OpenDb(szConfigDB);
	if(!SUCCEEDED(hr))
	{
		AfxMessageBox("打开配置数据库ACCESS失败!");
	}	
	CRecordSet *pSet=m_ado.CreateRecordSet("select * from t_task");
	try
	{
		while (!pSet->IsEOF())
		{
            CTask *taskTmp=new CTask();
			pSet->GetColVarSQL(taskTmp->TaskId,0);
			pSet->GetColVar(&taskTmp->taskName,1);
			pSet->GetColVar(&taskTmp->selectStr,2);
			pSet->GetColVar(&taskTmp->insertStr,3);
			pSet->GetColVar(&taskTmp->sourceTable,4);
			pSet->GetColVar(&taskTmp->objectTable,5);
			pSet->GetColVar(taskTmp->excuteTime,6);
			pSet->GetColVarSQL(taskTmp->freday,7);
			pSet->GetColVarSQL(taskTmp->frehour,8);
			pSet->GetColVarSQL(taskTmp->freminute,9);
			pSet->GetColVar(taskTmp->startTime,10);
			pSet->GetColVar(taskTmp->endTime,11);
			pSet->GetColVar(taskTmp->preEXTime,12);
			pSet->GetColVar(taskTmp->nextEXTime,13);
			pSet->GetColVarSQL(taskTmp->countTime,14);
			pSet->GetColVarSQL(taskTmp->successSum,15);
			pSet->GetColVarSQL(taskTmp->failedSum,16);
			pSet->GetColVarSQL(taskTmp->overflag,17);
			pSet->GetColVarSQL(taskTmp->selectcount,18);
            m_TaskListCs.Lock();
			m_TaskList.AddTail(taskTmp);
			m_TaskListCs.Unlock();
			pSet->MoveNext();
		}
		
	}
	catch(...)
	{
       	AfxMessageBox("读取ACCESS表错误!");
	}
	if (m_ado.IsOpen())
		m_ado.CloseDb();

}

CGlobal::ConnDM()
{
	hr=m_adoDM.OpenDb(szConDM);
	   if(!SUCCEEDED(hr))
	   {
		   //AfxMessageBox("打开DM数据库失败!");
		   m_log.PrintMsg("打开DM数据库失败!",ERRORMSG);
	   }	
	 
}

CGlobal::ConnOR()
{
	hr=m_adoOR.OpenDb(szConOracl);
	   if(!SUCCEEDED(hr))
	   {
		   //AfxMessageBox("打开ORACLE数据库失败!");
		   m_log.PrintMsg("打开ORACLE数据库失败!",ERRORMSG);
	   }	
}

CGlobal::TestConn()
{
	int iDM=10;
	int iOR=10;
    int i=m_adoDM.Execute("select curtime()");
	char aa[50]={0};
	sprintf(aa,"%d",i);
	//m_log.PrintMsg(aa);   
	
	CRecordSet* pSet1=m_adoDM.CreateRecordSet("select curtime()");
	if(!pSet1)
	{
		m_log.PrintMsg("连接DM数据库失败!开始重连",ERRORMSG);
		iDM=1;
	}
	try
	{
		
		if(!pSet1->IsEOF())
		{
			m_log.PrintMsg("达梦数据库连接测试!");
		}
		
		else
		{
           	m_log.PrintMsg("连接DM数据库失败!开始重连",ERRORMSG);
			iDM=1;
		}
		
	}
	catch(...)
	{
		m_adoDM.DestroyRecordSet(pSet1);
		m_log.PrintMsg("连接DM数据库失败!开始重连",ERRORMSG);	
		iDM=1;
	}
	
	m_adoDM.DestroyRecordSet(pSet1);
	
	if (iDM==1)
        ConnDM();
	
	CRecordSet* pSet=m_adoOR.CreateRecordSet("SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL");
	if(!pSet)
	{
		m_log.PrintMsg("连接oracle数据库失败!开始重连",ERRORMSG);
		iOR=1;
	}
	try
	{
		
		if(!pSet->IsEOF())
		{
			m_log.PrintMsg("ORACLE数据库连接测试!");
		}
		
		else
		{
           	m_log.PrintMsg("连接oracle数据库失败!开始重连",ERRORMSG);
			iOR=1;
		}
		
	}
	catch(...)
	{
		m_adoOR.DestroyRecordSet(pSet);
		m_log.PrintMsg("连接oracle数据库失败!开始重连",ERRORMSG);	
		iOR=1;
	}
	
	m_adoOR.DestroyRecordSet(pSet);
    if (iOR==1)
		ConnOR();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -