📄 dbintf.cpp
字号:
break;
}
case -13: // change userType from one to the other.
{
RTRACE(3, "\n------------------------------Change UserType error------------------------------\n");
strcpy(buffer, "Can not change UserType.");
ExecUpdateSQL(now, "2", buffer, &userInterface, odbc);
break;
}
//disconnect database
case -100:
{
RTRACE(3, "\n------------------------------Disconnected sysbase database------------------------------\n");
break;
}
// operate database failed. Error in database
default:
{
RTRACE(3, "\n------------------------------Error. Perhaps in database------------------------------\n");
ExecUpdateSQL(now, "2", "NULL", &userInterface, odbc);
break;
}
}
RTRACE(5, "\n------------------------------Sql Finish------------------------------\n");
odbc->AbortQuery(0);
}
}
}
else // can't connect database
{
CGlobal::Instance()->m_disconnectTimes++;
if(CGlobal::Instance()->m_disconnectTimes
>= CGlobal::Instance()->m_maxDisconnectTimes)
{
CGlobal::Instance()->m_disconnectTimes = 0;
if(CDogClient::Instance()->Init() == 0)
{
CDogClient::Instance()->SendMsg(e_fatalError,
"Can't connect database");
RTRACE(2, "Can't connect database");
RTRACE(5, "Send message by socket");
CDogClient::Instance()->Close();
}
}
}
delete odbc;
odbc = NULL;
}
catch(...)
{
RTRACE(2, "Disconnect database suddenly.");
if(odbc != NULL)
{
delete odbc;
odbc = NULL;
}
}
}
return 0;
}
// Form Update Sql for the table of 'UserInterface' and exec
void ExecUpdateSQL(char * now, char * flag, char * reason,
UserInterface *userInterface, COdbcFunc * odbc)
{
char sql[SQL_SIZE];
strcpy(sql, "update UserInterface set ");
strcat(sql, "Flag = ");
strcat(sql, flag);
strcat(sql, ", SendTime = '");
strcat(sql, userInterface->sendTime);
strcat(sql, "', BackTime = '");
strcat(sql, now);
if(strcmp(reason, "NULL") != 0 && strcmp(reason, "NULL") != 0)
{
strcat(sql, "', AddString = '");
strcat(sql, reason);
}
strcat(sql, "'");
strcat(sql, " where ");
// strcat(sql, userInterface->areaNo);
strcat(sql, " TeleNumber = '");
strcat(sql, userInterface->teleNumber);
strcat(sql, "' and GenTime = '");
strcat(sql, userInterface->genTime);
strcat(sql, "' and (Flag = 0 or Flag is NULL)");
RTRACE(5, sql);
odbc->ExecSQL(sql, 0);
}
/*
void test()
{
char serialno[21];
char porttype[11];
COdbcFunc * odbc = new COdbcFunc();
// connect successfully
if(odbc->Connect("oracledb", "zzz", "zoohoo") == 0)
{
odbc->SetAutoCommit(false);
odbc->AddResult(0);
odbc->ExecSQL("update userinterface set flag = 6");
odbc->ExecSQL("rollback");
odbc->ExecSQL("update userinterface set operatetype = -1", 0);
odbc->ExecSQL("commit");
// int iErrExc = odbc->ExecSQL("aaaa");
int iRes = odbc->ExecSQL("select PORTTYPE, SERIALNO, BeginTime from jk_sheet_control");
if(iRes == 0) // execute successly
{
while(odbc->Next() == 0)
{
struct tm tm1;
odbc->GetFieldValue(1, serialno, sizeof(serialno));
odbc->GetFieldValue(2, porttype, sizeof(porttype));
odbc->GetFieldValue(3, &tm1);
RTRACE(6, "serialno = " << serialno);
RTRACE(6, "porttype = " << porttype);
RTRACE(6, "beginTime = " << tm1.tm_hour);
int flag;
char dt[20], tele[20];
odbc->AddResult(0);
odbc->ExecSQL("select Flag, BackTime, TeleNumber from UserInterface", 0);
while(odbc->Next(0) == 0)
{
odbc->GetFieldValue(1, &flag, 0);
odbc->GetFieldValue(2, dt, sizeof(dt), 0);
odbc->GetFieldValue(3, tele, sizeof(tele), 0);
RTRACE(6, "flag = " << flag);
RTRACE(6, "dt = " << dt);
RTRACE(6, "tele = " << tele);
}
}
}
}
delete odbc;
}
*/
//int SaveDB(PStringArray line);
/*
int HandleFtp()
{
RTRACE(2, "Begin ftp loop");
if ( CGlobal::Instance()->m_isShutdown == 1 )
return -1;
PFTPClient ftp;
int j = 0;
// RTRACE(5, "FtpSrv NUMBER:" << CGlobal::Instance()->m_ftpNum);
for(int i=0;i<CGlobal::Instance()->m_oradbNum;i++)
{
try
{
if ( ftp.Connect(PIPSocket::Address(CGlobal::Instance()->m_negGkList[i].m_ip),
CGlobal::Instance()->m_negGkList[i].m_port) == false )
{
RTRACE(2, "Connect fail");
continue;
//return 0;
}
if ( ftp.LogIn(CGlobal::Instance()->m_username[i], CGlobal::Instance()->m_password[i]) == false )
{
RTRACE(2, "Login fail");
continue;
//return 0;
}
PStringArray fileArray = ftp.GetDirectoryNames(PFTP::ShortNames); //, PFTP::NormalPort);
RTRACE(5, "Files: " << fileArray);
// treat those files.
for ( j=0; j<fileArray.GetSize(); j++) {
// begin to get every file, and save it to local disk
// CGlobal::Instance()->m_serviceType = 700;
// CGlobal::Instance()->GetServiceTypeFromFileName(fileArray[j]);
// RTRACE(5, fileArray[j] << " FileType:" << CGlobal::Instance()->m_serviceType);
PTCPSocket * pSock = ftp.GetFile(fileArray[j]); //, PFTP::NormalPort);
if ( pSock == NULL )
{
RTRACE(2, "Read file: " << fileArray[j] << " fail!");
continue;
}
PString str;
int count = 0;
while(pSock->Read(str.GetPointer(count+1000)+count, 1000))
count += pSock->GetLastReadCount();
str.SetSize(count+1);
delete pSock;
RTRACE(5, "Response:" << ftp.ReadResponse());
PFile save;
PString pfileName;
pfileName = CGlobal::Instance()->m_localDir;
pfileName += "\\";
pfileName += fileArray[j];
RTRACE(5, pfileName);
save.Open(pfileName, PFile::WriteOnly);
save.WriteString(str);
save.Close();
RTRACE(4, "Read size:" << count+1);
RTRACE(6, ", context:\n" << str);
if ( SaveDB(str.Lines()) == 0 )
{
RTRACE(5, "Get cdr success");
// delete this file.
if ( ftp.ExecuteCommand(PFTP::DELE, fileArray[j])/100 == 2 )
{
RTRACE(5, "Del success: " << fileArray[j]);
}
else
{
RTRACE(2, "Del fail: " << fileArray[j]);
}
}
}
ftp.Close();
}
catch(...)
{
RTRACE(2, "Connect to Ftp Server " << PIPSocket::Address(CGlobal::Instance()->m_negGkList[i].m_ip) << "error");
}
}
return 0;
}
*/
// the connect time is bigger than 48 hours
// and it's 2~4 o'clock
// restart the service
void reconnectSession()
{
long timeLong = CGlobal::Instance()->m_irrFrequency *
CGlobal::Instance()->m_connectTime;
// get the datetime of now
time_t tNow;
struct tm * tmNow;
time(&tNow);
tmNow = localtime(&tNow);
if(tmNow->tm_hour >= 2 && tmNow->tm_hour <= 4
&& timeLong > 48 * 60 * 60)
{
CGlobal::Instance()->m_connectTime = 0;
CGlobal::Instance()->m_disconnectTimes = 0;
if(CDogClient::Instance()->Init() == 0)
{
CDogClient::Instance()->SendMsg(e_fatalError,
"Restart service for long time work");
RTRACE(3, "Restart service for long time work");
RTRACE(5, "Send message by socket");
CDogClient::Instance()->Close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -