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

📄 hfcjzc.cpp

📁 170话费催交系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			if(dba_connect==DBA_FALSE){
				sLock.Lock();
				if(pDatabase.IsOpen())
					pDatabase.Close();

				cjdata_flag=CJDATA_NO;
				try{
					if(pDatabase.Open( _T( "XTCJ170" ), FALSE, FALSE, _T( "ODBC;UID=xt170;PWD=VCplus170" ))==FALSE){
						TRACE("连接数据库失败");
						dba_connect=DBA_FALSE;
						//continue;
					}
					else{
						dba_connect=DBA_TRUE;
					}
				}
				catch(CDBException* pEx)
				{
					TRACE("连接数据库失败");
					dba_connect=DBA_FALSE;
					pEx->Delete();
					//continue;
				}
				catch(CMemoryException* pEx)
				{
					TRACE("连接数据库失败");
					dba_connect=DBA_FALSE;
					pEx->Delete();
					//continue;
				}
				sLock.Unlock();
				//pCuijiaoSet.Close();
			}

			if(dbawrite_connect==DBA_FALSE){
				sWritelock.Lock();
				if(pWritebase.IsOpen())
					pWritebase.Close();

				try{
					if(pWritebase.Open( _T( "XTCJ170" ), FALSE, FALSE, _T( "ODBC;UID=xt170;PWD=VCplus170" ))==FALSE){
						TRACE("连接数据库失败");
						dbawrite_connect=DBA_FALSE;
						//continue;
					}
					else{
						dbawrite_connect=DBA_TRUE;
					}
				}
				catch(CDBException* pEx)
				{
					TRACE("连接数据库失败");
					dbawrite_connect=DBA_FALSE;
					pEx->Delete();
					//continue;
				}
				catch(CMemoryException* pEx)
				{
					TRACE("连接数据库失败");
					dbawrite_connect=DBA_FALSE;
					pEx->Delete();
					//continue;
				}
				sWritelock.Unlock();
			}
		}

		if((cjdata_flag==CJDATA_NO)&&(dba_connect==DBA_TRUE)){
			sLock.Lock();
			if(pCuijiaoSet.IsOpen())
				pCuijiaoSet.Close();

			try{
				if(pCuijiaoSet.Open( CRecordset::forwardOnly , _T(cuijiaoSQL))==0){
					pCuijiaoSet.Close();
					cjdata_flag=CJDATA_NO;
					//continue;
				}
				else{
					if(pCuijiaoSet.GetRecordCount()==0){
						pCuijiaoSet.Close();
						cjdata_flag=CJDATA_NO;
					}
					else{
						pCuijiaoSet.Move(lcuijiaocurrent);
						cjdata_flag=CJDATA_YES;
					}
				}
			}
			catch(CDBException* e){
				dba_connect=DBA_FALSE;
				cjdata_flag=CJDATA_NO;
				e->Delete();
				//continue;
			}
			catch(CMemoryException* e){
				dba_connect=DBA_FALSE;
				cjdata_flag=CJDATA_NO;
				e->Delete();
				//continue;
			}
			sLock.Unlock();
		}
	}
	return (0);
}

/***************************************************************
 *     名称:UINT RecordData(LPVOID pParam)
 *     功能:记录数据库日志
 ***************************************************************/
UINT RecordData(LPVOID pParam)
{
	int channel;
	TCB * tcb;
	char InsertSQL[INSERTSQL_LENGTH];
	char UpdateSQL[UPDATESQL_LENGTH];

	while(1){
		::WaitForSingleObject(pRecordData.m_hObject, INFINITE);

		tcb=(TCB *)pParam;
		channel=tcb->chdevno;

		if(stopdata==STOPTRUE){
			//AfxMessageBox("Stop the recorddata thread");
			break;
		}
		
		if(dbawrite_connect==DBA_TRUE) {
			sWritelock.Lock();
			try{
				sprintf(InsertSQL, "insert into t_data_cjlog(hth,num,cj_money,cj_starttime,cj_endtime) values(\'%s\',\'%s\',\'%s\',TO_DATE(\'%s\', \'YYYY/MM/DD HH24:MI:SS\'),TO_DATE(\'%s\',\'YYYY/MM/DD HH24:MI:SS\'))",
											teleinfo[channel].hth,teleinfo[channel].num,teleinfo[channel].cuijiao,teleinfo[channel].qssj_time,teleinfo[channel].zzsj_time);
					
				sprintf(UpdateSQL, "update t_data_cuijiao set cjcount=%d, cjmonth=\'%s\' where hth=\'%s\'",
											teleinfo[channel].cjcount,teleinfo[channel].cjmonth,teleinfo[channel].hth);
				
				if(pWritebase.BeginTrans()){
					pWritebase.ExecuteSQL(_T(InsertSQL));
					pWritebase.ExecuteSQL(_T(UpdateSQL));
					if(pWritebase.CommitTrans()) {
						TRACE("Transaction Commited");
						dxinfo[channel].chdevzt=CHDEVZT_G;
					}
					else
					{
						pWritebase.Rollback();
						dxinfo[channel].chdevzt=CHDEVZT_H;
					}
				}
				else{
					dxinfo[channel].chdevzt=CHDEVZT_H;
				}
			}
			catch(CDBException* e){
				dbawrite_connect=DBA_FALSE;
				e->Delete();
				//continue;
			}
			catch(CMemoryException* e){
				dbawrite_connect=DBA_FALSE;
				e->Delete();
				//continue;
			}
			sWritelock.Unlock();
		}
		if(sr_putevt(dxinfo[channel].chdev,TDX_PLAY,sizeof(DX_IOTT),&dxinfo[channel].iott_cjvalue,0)==-1){
					//AfxMessageBox("putevt error");
		}
	}
	return(0);
}

/************************************************************
 *		名称:void Init_data()
 *		功能:初始化数据库的函数
 ***********************************************************/
void Init_data()
{
	CString szcbcount;
	CString szmaxcount;
	CString szmaxcountflag;
	CString szmaxringtime;
	CString szbohaotime;
	CString szcjtimeflag;
	CString szstartmonth;
	CString szendmonth;
	CString szstartday;
	CString szendday;
	CString szstarthour;
	CString szendhour;
	CString szstartminute;
	CString szendminute;
	CString szport;
	CString	szowner;
	CString szused;
	
	char ls_tmparg[10];
	char ls_i[10];
	char ls_port[10];
	char cjtimeSQL[200];
	int i;
	int channel;
	char errormsg[100];

	try{
		if(pDatabase.Open( _T( "XTCJ170" ), FALSE, FALSE, _T( "ODBC;UID=xt170;PWD=VCplus170" ))==FALSE){
			WinPrintf("连接数据库失败");
			exit(1);
		}
		if(pWritebase.Open( _T( "XTCJ170" ), FALSE, FALSE, _T( "ODBC;UID=xt170;PWD=VCplus170" ))==FALSE){
			WinPrintf("连接数据库write失败");
			exit(1);
		}
	}
	catch(CDBException* pEx)
	{
		WinPrintf("连接数据库失败");
		pEx->Delete();
		exit(1);
	}
	catch(CMemoryException* pEx)
	{
		WinPrintf("连接数据库失败");
		pEx->Delete();
		exit(1);
	}    		
	//WinPrintf("db opened ok");

    if((pDatabase.IsOpen()==FALSE)||(pWritebase.IsOpen()==FALSE)) {
		WinPrintf("db is not open");
		exit(1);
	}
	if((pDatabase.CanUpdate()==FALSE)||(pWritebase.CanUpdate()==FALSE)) {
		WinPrintf("db cann't update");
		exit(1);
	}
	if((pDatabase.CanTransact()==FALSE)||(pWritebase.CanTransact()==FALSE)) {
		WinPrintf("Transact cann't do");
		exit(1);
	}
	dba_connect=DBA_TRUE;
	dbawrite_connect=DBA_TRUE;
	//打开催缴记录集
	try{
		if(pCuijiaoSet.Open( CRecordset::forwardOnly , _T(cuijiaoSQL))==0){
		//if(pTestSet.Open( CRecordset::dynaset , _T(cuijiaoSQL))==0){
			pCuijiaoSet.Close();
			//pTestSet.Close();
			cjdata_flag=CJDATA_NO;
		}
		else{
			cjdata_flag=CJDATA_YES;
		}
	}
	catch(CDBException* e){
		//WinPrintf("连接数据库失败");
		strcpy(errormsg, "数据库错误:");
		strcat(errormsg, e->m_strError);
		AfxMessageBox(errormsg, MB_ICONEXCLAMATION );
		e->Delete();
		exit(1);
	}
	catch(CMemoryException* e){
		WinPrintf("连接数据库失败");
		e->Delete();
		exit(1);
	}
	long count=pCuijiaoSet.GetRecordCount();
	if(count==0){
		pCuijiaoSet.Close();
		cjdata_flag=CJDATA_NO;
	}
	else
	{
		cjdata_flag=CJDATA_YES;
	}
	//读取参数表,并对各参数赋值pCjadminSet
	try{
		if(pCjadminSet.Open( CRecordset::forwardOnly , _T(cjadminSQL))==0){
			pCjadminSet.Close();
			cjarg.cb_count=1;
			cjarg.max_count=3;
			cjarg.maxcount_flag=1;
			cjarg.ringtime=40;
			cjarg.bohao_time=1000;
		}
	}
	catch(CDBException* e){
		WinPrintf("连接数据库失败");
		e->Delete();
		exit(1);
	}
	catch(CMemoryException* e){
		WinPrintf("连接数据库失败");
		e->Delete();
		exit(1);
	}
	if(pCjadminSet.GetRecordCount()==0){
		pCjadminSet.Close();
		cjarg.cb_count=1;
		cjarg.max_count=3;
		cjarg.maxcount_flag=1;
		cjarg.ringtime=40;
		cjarg.bohao_time=1000;
	}

	if(pCjadminSet.IsOpen()){
		try{
			pCjadminSet.GetFieldValue( _T(cb_count) , szcbcount);
			if(szcbcount.IsEmpty())
				cjarg.cb_count=1;
			else{
				sprintf(ls_tmparg,szcbcount);
				cjarg.cb_count=atoi(ls_tmparg);
			}

			pCjadminSet.GetFieldValue( _T(max_count) , szmaxcount);
			if(szmaxcount.IsEmpty())
				cjarg.max_count=3;
			else{
				sprintf(ls_tmparg,szmaxcount);
				cjarg.max_count=atoi(ls_tmparg);
			}

			pCjadminSet.GetFieldValue( _T(maxcount_flag) , szmaxcountflag);
			if(szmaxcountflag.IsEmpty())
				cjarg.maxcount_flag=1;
			else{
				sprintf(ls_tmparg,szmaxcountflag);
				cjarg.maxcount_flag=atoi(ls_tmparg);
			}

			pCjadminSet.GetFieldValue( _T(max_ringtime) , szmaxringtime);
			if(szmaxringtime.IsEmpty())
				cjarg.ringtime=40;
			else{
				sprintf(ls_tmparg,szmaxringtime);
				cjarg.ringtime=atoi(ls_tmparg);
			}

			pCjadminSet.GetFieldValue( _T(bohao_time) , szbohaotime);
			if(szbohaotime.IsEmpty())
				cjarg.bohao_time=1000;
			else{
				sprintf(ls_tmparg,szbohaotime);
				cjarg.bohao_time=atoi(ls_tmparg);
			}
		}
		catch(CDBException* e){
			WinPrintf("连接数据库失败");
			e->Delete();
			exit(1);
		}
		catch(CMemoryException* e){
			WinPrintf("连接数据库失败");
			e->Delete();
			exit(1);
		}
		pCjadminSet.Close();
	}
	//读取参数表,并对各参数赋值pCjtimeSet
	for(i=1;i<=3;i++){
		itoa(i,ls_i,10);
		sprintf(cjtimeSQL, "select cjtimeflag, start_month, end_month, start_day, end_day, start_hour, end_hour, start_minute, end_minute from t_data_cjtime where serial=\'%s\'",ls_i);
	
		try{
			if(pCjtimeSet.Open( CRecordset::forwardOnly , _T(cjtimeSQL))==FALSE){
				pCjtimeSet.Close();
				switch(i){
				case 1:
					cjarg.cjtime_one=1;
					break;
				case 2:
					cjarg.cjtime_two=0;
					break;
				case 3:
					cjarg.cjtime_three=0;
					break;
				}
				cjarg.cjtime[i-1].start_month=1;
				cjarg.cjtime[i-1].end_month=12;
				cjarg.cjtime[i-1].start_day=1;
				cjarg.cjtime[i-1].end_day=31;
				cjarg.cjtime[i-1].start_hour=0;
				cjarg.cjtime[i-1].end_hour=23;
				cjarg.cjtime[i-1].start_minute=0;
				cjarg.cjtime[i-1].end_minute=59;
				continue;
			}
		}
		catch(CDBException* e){
			//WinPrintf("连接数据库失败");
			strcpy(errormsg, "数据库错误:");
			strcat(errormsg, e->m_strError);
			AfxMessageBox(errormsg, MB_ICONEXCLAMATION );
			e->Delete();
			exit(1);
		}
		catch(CMemoryException* e){
			WinPrintf("连接数据库失败");
			e->Delete();
			exit(1);
		}
		if(pCjtimeSet.GetRecordCount()==0){
			pCjtimeSet.Close();
			switch(i){
			case 1:
				cjarg.cjtime_one=1;
				break;
			case 2:
				cjarg.cjtime_two=0;
				break;
			case 3:
				cjarg.cjtime_three=0;
				break;
			}
			cjarg.cjtime[i-1].start_month=1;
			cjarg.cjtime[i-1].end_month=12;
			cjarg.cjtime[i-1].start_day=1;
			cjarg.cjtime[i-1].end_day=31;
			cjarg.cjtime[i-1].start_hour=0;
			cjarg.cjtime[i-1].end_hour=23;
			cjarg.cjtime[i-1].start_minute=0;
			cjarg.cjtime[i-1].end_minute=59;
			continue;
		}
		
		try{
			pCjtimeSet.GetFieldValue( _T(cjtimeflag) , szcjtimeflag);
			if(szcjtimeflag.IsEmpty()){
				switch(i){
				case 1:
					cjarg.cjtime_one=1;
					break;
				case 2:
					cjarg.cjtime_two=0;
					break;
				case 3:
					cjarg.cjtime_three=0;
					break;
				}
			}
			else{
				switch(i){
				case 1:
					sprintf(ls_tmparg,szcjtimeflag);
					cjarg.cjtime_one=atoi(ls_tmparg);
					break;
				case 2:
					sprintf(ls_tmparg,szcjtimeflag);
					cjarg.cjtime_two=atoi(ls_tmparg);
					break;
				case 3:
					sprintf(ls_tmparg,szcjtimeflag);
					cjarg.cjtime_three=atoi(ls_tmparg);
					break;
				}
			}

			pCjtimeSet.GetFieldValue( _T(start_month) , szstartmonth);
			if(szstartmonth.IsEmpty())
				cjarg.cjtime[

⌨️ 快捷键说明

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