CDAO::CDAO() { connStringFormat = _T("Provider=MSDASQL.1;") _T("Persist Security Info=False;") _T("Extended Properties=\"") _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};") _T("DriverId=25;") _T("FIL=MS Access;") _T("MaxBufferSize=2048;") _T("MaxScanRows=8;") _T("PageTimeout=5;") _T("SafeTransactions=0;") _T("Threads=3;") _T("UID=admin;") _T("DefaultDir=%s;") _T("DBQ=%s;") _T("FILEDSN=%s;") _T("UserCommitSync=Yes;\""); try{ ConnectDB(); } catch(CExceptionDAO errDAO) { throw errDAO; } catch(CADOException errADO) { throw errADO; } }
int InsertSyncLog(COUPON_INFO_T *Data, int Count) { char sql_stm[SMALL_BUFF]; int i, count; DBPROCESS *dbproc = ConnectDB(); memset(sql_stm, 0, SMALL_BUFF); for(i = 0; i < Count; i++) { sprintf(sql_stm, "Insert INTO T_CouponInfo_Compare2 (CouponNo, MemberCode, ProductCode, UsePeriod, ValidPeriod, StartDate, EndDate, UseDate, Status, RegDate) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');", Data[i].CouponID, Data[i].MemberCode, Data[i].ProductID, Data[i].DueMonth, Data[i].ExpireMonth, Data[i].CreateDate, Data[i].ExpireDate, Data[i].RegistDate, Data[i].Status, Data[i].LastUpdateTimeStamp); printLog(HEAD, "SQL::(%s)\n", sql_stm); dbcmd(dbproc, sql_stm); dbsqlexec(dbproc); if((count = DBCOUNT(dbproc)) == 0) { printLog(HEAD, "(%s) sql fail ..\n", sql_stm); } } DisConnectDB(); return NO_ERROR; }
BOOL SFMSSQL::Initialize(_DBConnectionInfo* pInfo) { if(FALSE == ConnectDB((char*)StringConversion::ToASCII(pInfo->szDBName).c_str(), (char*)StringConversion::ToASCII(pInfo->szUser).c_str(), (char*)StringConversion::ToASCII(pInfo->szPassword).c_str())) return FALSE; return TRUE; }
bool CDBReader::Init(LPCTSTR strLib, bool bListen) { pLib = LoadLibrary(strLib); if(pLib == NULL) return false; pFun_ConnectDB = (DB_Dll_ConnectDB)GetProcAddress(pLib, "ConnectDB"); if(pFun_ConnectDB == NULL) return false; pFun_DisConnect = (DB_Dll_DisConnectDB)GetProcAddress(pLib, "DisConnectDB"); if(pFun_DisConnect == NULL) return false; pFun_GetLastErr = (DB_Dll_GetLastErr)GetProcAddress(pLib, "GetLastErr"); if(pFun_GetLastErr == NULL) return false; pFun_GetLastErrMsg = (DB_Dll_GetLastErrMsg)GetProcAddress(pLib, "GetLastErrMsg"); if(pFun_GetLastErrMsg == NULL) return false; pFun_GetTaskByID = (DB_Dll_GetTaskByID)GetProcAddress(pLib, "GetTaskByID"); if(pFun_GetTaskByID == NULL) return false; pFun_SetTaskAtt_Int = (DB_Dll_SetTaskAtt_Int)GetProcAddress(pLib, "SetTaskAtt_Int"); if(pFun_SetTaskAtt_Int == NULL) return false; pFun_GetReply = (DB_Dll_GetReply)GetProcAddress(pLib, "GetReply"); if(pFun_GetReply == NULL) return false; pFun_StartChannel = (DB_Dll_StartChannel)GetProcAddress(pLib, "StartChannel"); if(pFun_StartChannel == NULL) return false; pFun_PuclishCmd = (DB_Dll_PuclishCmd)GetProcAddress(pLib, "PublishCmd"); if(pFun_PuclishCmd == NULL) return false; if(!ConnectDB()) return false; if(bListen) { #ifdef UNICODE char cChlName[MAX_PATH] = { "" }; WideCharToMultiByte(CP_ACP, 0, Db_CHANNEL_NAME, -1, cChlName, MAX_PATH, NULL, NULL); return pFun_StartChannel( pDB_Context , cChlName ); #else return pFun_StartChannel(pDB_Context, Db_CHANNEL_NAME); #endif } return true; }
MainForm::MainForm(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainForm) { ui->setupUi(this); db = ConnectDB(g_hostname,g_dataBase,g_login,g_password,g_driverName,g_connect_port); // CreateDb(db); UpdateClients(0); }
bool CDBReader::GetReply(char* strRely, int nLen) { if(pFun_GetReply == NULL) return false; if(!ConnectDB()) return false; bool bRet = pFun_GetReply(pDB_Context, strRely, nLen); bConnected = bRet; return bRet; }
bool CDBReader::GetTaskByID(int nTaskID, char* strTask, const char* strHeader) { if(pFun_GetTaskByID == NULL) return false; if(!ConnectDB()) return false; bool bRet = pFun_GetTaskByID(pDB_Context, nTaskID, strTask, TASK_STRING_MAX_LEN, strHeader); if(!bRet) printErr(); bConnected = bRet; return bRet; }
int DISK::Initialize(CFileLog *a_pclsLog, RESOURCE *a_pRsc, void *a_pclsMain) { RESOURCE_ATTR *pstAttr = NULL; DISK_VALUE *pstDiskData = NULL; if(a_pclsLog == NULL) return -1; m_pclsLog = a_pclsLog; m_pGroupRsc = a_pRsc; m_pmapRsc = &(a_pRsc->mapRsc); m_pclsMain = (RSAMain*)a_pclsMain; m_pclsEvent = m_pclsMain->GetEvent(); map<string, RESOURCE_ATTR *>::iterator it; for(it = m_pmapRsc->begin(); it != m_pmapRsc->end() ; it++) { if(it->second != NULL) { pstAttr = it->second; } else { break; } if(pstAttr->pData == NULL) { //Init Stat Data it->second->pData = (void*)new DISK_VALUE; pstDiskData = (DISK_VALUE*)it->second->pData; pstDiskData->vecSumValue.assign(MAX_DISK_IDX, 0); pstDiskData->vecAvgValue.assign(MAX_DISK_IDX, 0); } m_pclsLog->INFO("Name : %s, Args : %s, Idx : %d", pstAttr->szName, pstAttr->szArgs, MAX_DISK_IDX); } if(ConnectDB() < 0) { m_pclsLog->ERROR("Fail to Init CPU Module"); return -1; } return 0; }
int DISK::InsertTopData() { int ret = 0; char szBuffer[DEF_MEM_BUF_1024]; DISK_VALUE *pstData = NULL; if(ConnectDB() < 0) { m_pclsLog->ERROR("Fail to Init CPU Module"); return -1; } snprintf(szBuffer, sizeof(szBuffer), "DELETE FROM TAT_RSC_TOP WHERE NODE_NO = '%d' AND RSC_GRP_ID = '%s'" , m_pclsMain->GetNodeID() , m_pGroupRsc->szGroupID ); if( (ret=m_pclsDB->Execute(szBuffer, strlen(szBuffer))) < 0 ) { m_pclsLog->ERROR("Execute Fail [%d] [%s] [%d:%s]", ret, szBuffer, m_pclsDB->GetError(), m_pclsDB->GetErrorMsg()); delete m_pclsDB; m_pclsDB = NULL; return -1; } std::sort(vecTop.begin(), vecTop.end(), disk_sort_function); int i = 0; for(std::vector<RESOURCE_ATTR*>::iterator it=vecTop.begin(); it != vecTop.end() && i < DEF_MAX_TOP_COUNT; ++it, i++) { pstData = (DISK_VALUE*)(*it)->pData; snprintf(szBuffer, sizeof(szBuffer), "INSERT INTO TAT_RSC_TOP VALUES ('%s', '%s', '%d', sysdate(), '%.2f')" , m_pGroupRsc->szGroupID , (*it)->szID , m_pclsMain->GetNodeID() , pstData->vecAvgValue[IDX_DISK_USAGE] ); if( (ret=m_pclsDB->Execute(szBuffer, strlen(szBuffer))) <= 0 ) { m_pclsLog->ERROR("Execute Fail [%d] [%s] [%d:%s]", ret, szBuffer, m_pclsDB->GetError(), m_pclsDB->GetErrorMsg()); delete m_pclsDB; m_pclsDB = NULL; return -1; } } return 0; }
int CGImain(void) { char *s; ConnectDB(); s = GetValue("s"); GetMAC(remote_addr()); if(MAC[0]==0) DisplayStage('0',"无法获取MAC地址",1); if ( (s== NULL) || *s=='0') Stage0(); else if( *s=='1') Stage1(); else if(*s=='2') { Stage2(); } else Stage0(); return 0; }
int main(int argc, char *argv[]) { QTextCodec *codec = QTextCodec::codecForName("cp1251"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec); QApplication a(argc, argv); a.addLibraryPath(QDir::currentPath()+"/plugins"); QFile file(":/res/styles/default.qss"); file.open(QFile::ReadOnly); QString styleSheet = QLatin1String(file.readAll()); qApp->setStyleSheet(styleSheet); mainForm w; ConnectDB(g_hostname, g_dataBase, g_login, g_password, g_driverName,g_connect_port); QSqlQuery sql; sql.prepare("SELECT UserName, RealUserName " "FROM sys_users"); sql.exec(); if (!sql.next()){ QString script; if (g_driverName == "QSQLITE") script = ":/res/scripts/sqlite.sql"; else if (g_driverName == "QMYSQL") script = ":/res/scripts/mysql.sql"; SqlProcessor *CreateDB = new SqlProcessor("c:/sql_log.log"); CreateDB->setDb(db); CreateDB->setSqlScript(script); CreateDB->run(); } LoginUser *frmLogin = new LoginUser(0); frmLogin->setModal(true); frmLogin->Init(&w); frmLogin->setWindowFlags(Qt::Window | Qt::FramelessWindowHint); frmLogin->show(); return a.exec(); }
void CDBReader::Publish(const char* strCmd) { if(pFun_PuclishCmd == NULL) return; if(!ConnectDB()) return; #ifdef UNICODE char cChlName[MAX_PATH] = { "" }; WideCharToMultiByte(CP_ACP, 0, HEARTBEAT_CHANNEL_NAME, -1, cChlName, MAX_PATH, NULL, NULL); bool bRet = pFun_PuclishCmd(pDB_Context, cChlName, strCmd); #else bool bRet = pFun_PuclishCmd(pDB_Context, HEARTBEAT_CHANNEL_NAME, strCmd); #endif bConnected = bRet; }
bool CDBReader::SetTaskVal(int nTaskID, int nType, int nVal, const char* strHeader) { if(pFun_SetTaskAtt_Int == NULL) return false; if(!ConnectDB()) return false; if(nType != TASK_ATTRIBUTE::ATT_PAGECOUNT && nType != TASK_ATTRIBUTE::ATT_STATE && nType != WATERMARK_ATTRIBUTE::ATT_Water_STATE) return false; bool bRet = pFun_SetTaskAtt_Int(pDB_Context, nTaskID, nType, nVal, strHeader); if(!bRet) printErr(); bConnected = bRet; return bRet; }
int InsertSyncSQL(char *SQL) { char sql_stm[SMALL_BUFF]; int count; DBPROCESS *dbproc = ConnectDB(); memset(sql_stm, 0, SMALL_BUFF); sprintf(sql_stm, "%s", SQL); printLog(HEAD, "SQL::(%s)\n", sql_stm); dbcmd(dbproc, sql_stm); dbsqlexec(dbproc); if((count = DBCOUNT(dbproc)) == 0) { printLog(HEAD, "(%s) sql fail ..\n", sql_stm); } DisConnectDB(); return NO_ERROR; }
int main(int argc, char* argv[]) { #ifdef CHECK_MEMLEAK _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #endif //Initialize the ICU calendar UErrorCode status = U_ZERO_ERROR; dateGC = new GregorianCalendar(status); //get all the command line options GetOptionFlags(argc, argv, o); s.username = o.username; s.password = o.password; s.serverName = o.serverName; //set up the log file std::string dateString = GetDateString(dateGC->getNow(), dateGC); std::string fileName = dateString + o.gSymbol; fileName = GetSymbolTableName(fileName, o); fileName += ".log"; gLogFile = fopen(fileName.c_str(), "w+"); if (gLogFile == NULL) { printf("Could not open file %s, exiting. Sucks that I can't log this output\n", fileName.c_str()); exit(-1); } //Initialize IQ Feed InitDataFeed(); //set the SQL pointers based on the data being downloaded SetSQLPointers(o); ///////////////////////////// // Get the symbols ///////////////////////////// if (o.gSymbol.compare("dow30") == 0) o.gSymbol = dow30; boost::char_separator<char> sep(","); boost::tokenizer< boost::char_separator<char> > tokens(o.gSymbol, sep); // Create a list from the tokens std::vector<std::string> symbolList(tokens.begin(), tokens.end()); std::vector<std::string> contractList; std::map<std::string, std::string> contractMap; //get all the symbols if (o.isOption == true || o.isFutures == true) { contractList = convertSymbolsToContracts(symbolList, contractMap); symbolList = contractList; } int numSymbols = symbolList.size(); WriteLog("There are %d symbols\n", numSymbols); //determine if we should use the hashTable, currently only //for ticks and non-contract-related data if (o.useTicks == true)// && (o.isOption == false && o.isFutures == false)) o.useHashTable = true; DBHandles s; s.username = o.username; s.serverName = o.serverName; s.password = o.password; ConnectDB(&s); for (int i = 0; i < numSymbols; i++) { std::string currentSymbol = symbolList[i]; // Get the data from the data feed and stuff into link list link *head = NULL; try { head = GetData(currentSymbol); } catch (const DataException &d) { std::string errorString; ODBCError(&s, errorString); WriteLog("GetData error: %s\n", errorString.c_str()); WriteLog("problem on file %s, line %d\n", d._function.c_str(), d._lineNum); exit(-1); } //if there's no data then move to the next symbol if (head == NULL) continue; //get the symbolTableName and create table if necessary std::string symbolTableName; if (o.useHardcodedTable == true) symbolTableName = o.hardcodedTable; else if (o.isOption == true || o.isFutures == true) symbolTableName = GetSymbolTableName(contractMap[currentSymbol], o); else symbolTableName = GetSymbolTableName(currentSymbol, o); if (CheckTableExists(&s, checkTableExists, symbolTableName.c_str()) == false) { CreateTable(&s, o.gSqlCommand, o.gIndexSQL, (char *) symbolTableName.c_str()); } //get the last chunk for its timestamp //lame could do this better but it's not too expensive for now link *lastChunk = head; while (lastChunk->next != NULL) lastChunk = lastChunk->next; //write the data try { boost::unordered_set<dataPoint> *hash = NULL; if (o.useHashTable == true) hash = GetDBHash(&s, symbolTableName, head->beginTimestamp, lastChunk->endTimestamp, currentSymbol); WriteData(&s, head, currentSymbol, symbolTableName, hash); delete hash; } catch (const DataException &d) { std::string errorString; ODBCError(&s, errorString); WriteLog("WriteData error: %s\n", errorString.c_str()); WriteLog("problem on file %s, line %d\n", d._function.c_str(), d._lineNum); exit(-1); } } DisconnectDB(&s); RemoveClientApp(NULL); }
HRESULT CHveDbController::SaveDBElement(RESULT_ELEMENT* pElement) { HRESULT hr = S_OK; if(!m_fIsConnecting) { SaveLog("数据库连接已经断开,尝试重新连接..."); hr = ConnectDB(); } if(!m_fIsConnecting) { char szOutPutInfo[100]; sprintf(szOutPutInfo, "连接数据库失败,保存%s结果失败...错误码:%d", pElement->szPlateNo, GetLastError()); SaveLog(szOutPutInfo); OutPutMessage(szOutPutInfo); return E_FAIL; } _variant_t RecordsAffected; CTime cTime(pElement->dw64TimeMs / 1000); CString strTime = cTime.Format("%Y-%m-%d %H:%M:%S"); CString strCurTable = cTime.Format("Hve_Data_%Y%m%d"); //int iMinute = cTime.GetMinute(); //CString strTmp = cTime.Format("Hve_Data_%Y%m%d%H"); //strCurTable.Format("%s_%d",strTmp.GetBuffer(), iMinute/10); // 10分钟一张表 //strTmp.ReleaseBuffer(); if(m_strLastTable != strCurTable) { char szCmdText[1024] = {0}; //try //{ // sprintf(szCmdText, "Create TABLE %s(Record_Id bigint primary key IDENTITY (1, 1) NOT NULL,\ // Location_Id int NOT NULL,Pass_Time datetime NOT NULL, Plate_No char(20), Road_No int,\ // Car_Speed int, Obj_Id int, Time_Headway int, Over_Line int, Cross_Line int,\ // Emergency_Stop int, Reverse_Run bit, Special_Result bit, big_image_1_path char(256),\ // big_image_2_path char(256), big_image_3_path char(256), big_image_4_path char(256),\ // big_image_5_path char(256), small_image_path char(256), bin_image_path char(256),\ // video_path char(256))", strCurTable.GetBuffer()); // m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); // sprintf(szCmdText, "CREATE INDEX [Pass_Time] ON [dbo].[%s] ([Pass_Time])", strCurTable.GetBuffer()); // m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); // sprintf(szCmdText, "CREATE INDEX [Obj_Id] ON [dbo].[%s] ([Obj_Id])", strCurTable.GetBuffer()); // m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); // sprintf(szCmdText, "CREATE INDEX [Special_Result] ON [dbo].[%s] ([Special_Result])", strCurTable.GetBuffer()); // m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); //} //表存在则不创建 try { sprintf(szCmdText, "if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[%s]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) \ Create TABLE %s(Record_Id bigint primary key IDENTITY (1, 1) NOT NULL,\ Location_Id int NOT NULL,Pass_Time datetime NOT NULL, Plate_No char(20), Road_No int, Road_Name char(25),Road_Direct char(10),\ Car_Speed int, Obj_Id int, Time_Headway int, Over_Line int, Cross_Line int,\ Emergency_Stop int, Reverse_Run bit, Speeding bit, Special_Result bit, big_image_1_path varchar(256),\ big_image_2_path varchar(256), big_image_3_path varchar(256), big_image_4_path varchar(256),\ big_image_5_path varchar(256), small_image_path varchar(256), bin_image_path varchar(256),\ video_path varchar(256))",strCurTable.GetBuffer(),strCurTable.GetBuffer()); m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); sprintf(szCmdText, "if not exists (select * from sysindexes where name='Pass_Time') CREATE INDEX [Pass_Time] ON [dbo].[%s] ([Pass_Time])", strCurTable.GetBuffer()); m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); sprintf(szCmdText, "if not exists (select * from sysindexes where name='Obj_Id') CREATE INDEX [Obj_Id] ON [dbo].[%s] ([Obj_Id])", strCurTable.GetBuffer()); m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); sprintf(szCmdText, "if not exists (select * from sysindexes where name='Special_Result') CREATE INDEX [Special_Result] ON [dbo].[%s] ([Special_Result])", strCurTable.GetBuffer()); m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); } catch (_com_error e) { m_fIsConnecting = FALSE; CString strErrorMessage; strErrorMessage.Format("创建表失败!错误信息:%s 错误码:%d", e.ErrorMessage(), GetLastError()); SaveLog(strErrorMessage.GetBuffer()); SaveLog(e.Description()); OutPutMessage("创建数据表失败!"); } ///////视图创建 由查询软件创建 //try //{ // char szCmdText[1024] = {0}; // sprintf(szCmdText, "IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = N'Hve_Data_View') DROP VIEW Hve_Data_View"); // m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); //} //catch (_com_error e) //{ // CString strErrorMessage; // strErrorMessage.Format("删除视图失败! 错误信息:%s 错误码:%d", e.ErrorMessage(), GetLastError()); // SaveLog(strErrorMessage.GetBuffer()); // SaveLog(e.Description()); // OutPutMessage("删除视图失败..."); //} //bool fIsCreateViewFault = true; //int iRetry = 0; //while(fIsCreateViewFault) //{ // if(iRetry++ == 5) // { // exit(1); //reboot // } // try // { // _RecordsetPtr pPtr; // CString strName; // if(FAILED(pPtr.CreateInstance("ADODB.Recordset"))) // { // OutPutMessage("创建ADO数据集失败..."); // return E_FAIL; // } // CString strConnectInfo; // strConnectInfo.Format("Driver=SQL Server;Server=%s;DATABASE=%s;UID=%s;PWD=%s", // m_strServerIP, m_strDataBase, m_strUserName, m_strPassword); // CString strCommand = "SELECT name FROM sysobjects WHERE (name LIKE 'Hve_Data_%')";; // if(FAILED(pPtr->Open(_variant_t(strCommand), _variant_t(strConnectInfo), adOpenStatic, adLockOptimistic, adCmdText))) // { // OutPutMessage("获取数据表名字失败..."); // pPtr.Release(); // return E_FAIL; // } // while(!pPtr->GetadoEOF()) // { // CString strTmp = (char*)_bstr_t(pPtr->GetCollect("name")); // strTmp.TrimRight(); // if(strName == "") // { // strName.Format("(SELECT * FROM %s)", strTmp); // } // else // { // strName.AppendFormat("union (SELECT * FROM %s)", strTmp); // } // pPtr->MoveNext(); // } // pPtr->Close(); // pPtr.Release(); // char szCmdText[1024] = {0}; // sprintf(szCmdText, "CREATE VIEW Hve_Data_View AS %s", strName); // m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText); // fIsCreateViewFault = false; // } // catch (_com_error e) // { // fIsCreateViewFault = true; // CString strErrorMessage; // strErrorMessage.Format("创建视图失败... 错误码:%d", GetLastError()); // SaveLog(strErrorMessage.GetBuffer()); // SaveLog(e.Description()); // OutPutMessage("创建视图失败..."); // } //} }
bool COfficeTask::start() { string m_szBinaryPath = CDirectory::GetApplicationFileName(); m_szAppPath = CDirectory::GetApplicationDirectory(); char strInfo[1024]={0}; sprintf(strInfo,"正在启动服务,程序版本:%s",IDS_PROGRAM_VERSION); m_log.AddLog(strInfo); // 检查 dat文件 string szDatFilePath = m_szBinaryPath.substr(0,m_szBinaryPath.find_last_of('.')) + ".dat"; ifstream myFile; myFile.open(szDatFilePath.c_str(),std::ifstream::binary); if(myFile.is_open()) { myFile.seekg (0, myFile.end); unsigned int nFileSize = myFile.tellg(); myFile.seekg (0, myFile.beg); if(nFileSize <= 0) { cout<< szDatFilePath<<" is empty"<<endl; m_log.AddLog("Dat文件为空"); myFile.close(); return false; } char* buffer = new char[nFileSize+1]; memset(buffer,0,nFileSize+1); myFile.read(buffer, nFileSize); nFileSize = myFile.gcount();//返回读取的字节数 myFile.close(); buffer[nFileSize] = '\0'; string szDatCode = buffer; delete []buffer; szDatCode = TDAuthCode(szDatCode, false); } else { string strError = "Cannot open "+ szDatFilePath; cout<<strError<<endl; m_log.AddLog("不能打开Dat文件"); return false; } //取得数据库参数 GetMySQLConfig(m_dbParam); //连接数据库。 if (!ConnectDB()) { //数据库连接不上写入日志文件 string strError = "服务没有启动:数据库联接不上" ; cout<< "Service not start:cannot connect database"<<endl; m_log.AddLog(strError,CLog::WARN); return false; } string strCharacterSet; if(m_nDatabaseCharacterSet == DATABASE_CHARACTER_SET_GBK) strCharacterSet = "gbk"; else if(m_nDatabaseCharacterSet == DATABASE_CHARACTER_SET_UTF8) strCharacterSet = "utf-8"; char strMysqlInfo[1024]={0}; sprintf(strMysqlInfo,"连接MySQL服务器 %s:%d (%s:%s)成功,字符集:%s", m_dbParam.host.c_str(), m_dbParam.port, m_dbParam.dbHandle.c_str(), m_dbParam.user.c_str(), strCharacterSet.c_str()); m_log.AddLog(strMysqlInfo); //记录服务启动的时间 //gettimeofday(&timeBegin,NULL); time(&timeBegin); int nDatabaseCharacterSet = m_Database.GetCharacterSet(); if (nDatabaseCharacterSet == DATABASE_CHARACTER_SET_GBK) { string strTemp = "SET NAMES GBK"; m_Database.MysqlQuery(strTemp); } else if (nDatabaseCharacterSet == DATABASE_CHARACTER_SET_UTF8) { string strTemp = "SET NAMES UTF8"; m_Database.MysqlQuery(strTemp); } //获取OA的地址和端 char sql[256] = "select * from SYS_PARA where find_in_set(PARA_NAME, 'TASK_SVC_VERSION,OA_URL,TASK_PORT')"; if(!m_Database.FindSave(sql)) { char strSysParaInfo[1024]={0}; sprintf(strSysParaInfo,"查询系统参数错误(%s) " , m_Database.OutErrors()); return false; } bool bVersionExists = false; MYSQL_ROW row; while((row = m_Database.GetRecord()) != NULL) { string strParaName,strParaValue; if (nDatabaseCharacterSet == DATABASE_CHARACTER_SET_GBK) { CTDEncodeTransform::GbkToUtf8(strParaName,row[0]); CTDEncodeTransform::GbkToUtf8(strParaValue,row[1]); } else if (nDatabaseCharacterSet == DATABASE_CHARACTER_SET_UTF8) { strParaName = row[0]; strParaValue = row[1]; } if(strcmp(strParaName.c_str(), "TASK_SVC_VERSION") == 0) bVersionExists = true; else if(strcmp(strParaName.c_str(), "OA_URL") == 0) m_szOAURL = strParaValue; else if(strcmp(strParaName.c_str(), "TASK_PORT") == 0) m_nListenPort = CTDDataTransform::StringToUnsignedInt(strParaValue); } //string szSQL; char szSQL[1024]={0}; if(bVersionExists) sprintf(szSQL,"update SYS_PARA set PARA_VALUE='%s' where PARA_NAME='TASK_SVC_VERSION';",IDS_PROGRAM_VERSION); else sprintf(szSQL,"insert into SYS_PARA (PARA_NAME,PARA_VALUE) values('TASK_SVC_VERSION','%s');",IDS_PROGRAM_VERSION); if(!m_Database.MysqlQuery(szSQL)) { char strVerInfo[1024]={0}; sprintf(strVerInfo,"更新版本号错误(%s)" ,m_Database.OutErrors()); m_log.AddLog(strVerInfo); } char szOAInfo[1024]={0}; sprintf(szOAInfo,"OA地址:%s",m_szOAURL.c_str()); m_log.AddLog(szOAInfo); if(m_szOAURL.empty()) { char szOAUrl[1024]={0}; sprintf(szOAUrl,"http://localhost:%s",GetApachePort().c_str()); m_szOAURL = szOAUrl; m_log.AddLog("没有设置Web服务器地址,请登录OA进入“系统管理->系统参数设置->OA服务设置”模块进行设置。"); } return true; }