Example #1
0
File: DAO.cpp Project: lsi3131/test
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;
	} 
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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);

}
Example #6
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;
}
Example #7
0
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;
}
Example #8
0
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;
}
Example #9
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;
}
Example #10
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;
}
Example #11
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();
}
Example #12
0
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;
}
Example #13
0
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;
}
Example #14
0
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;
}
Example #15
0
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);
}
Example #16
0
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("创建视图失败...");
		//	}
		//}
	
	}
Example #17
0
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;
}