Exemplo n.º 1
0
// query database
int OTLDatabaseLayer::RunQuery(const wxString& strQuery, bool bParseQuery)
{
    try
    {
        wxArrayString QueryArray;
        if (bParseQuery)
            QueryArray = ParseQueries(strQuery);
        else
            QueryArray.push_back(strQuery);

        wxArrayString::iterator start = QueryArray.begin();
        wxArrayString::iterator stop = QueryArray.end();

        while (start != stop)
        {
            wxCharBuffer sqlBuffer = ConvertToUnicodeStream((*start));
            std::string strSQL(sqlBuffer);
            strSQL = RemoveLastSemiColon(strSQL);
            //wxPrintf(_("RunQuery: '%s'\n"), strSQL.c_str());
            otl_stream otlStream(1,strSQL.c_str(),m_database);
            start++;
        }
    }
    catch (otl_exception& e)
    {
        SetErrorCode(OTLDatabaseLayer::TranslateErrorCode(e.code));
        SetErrorMessage(ConvertFromUnicodeStream((char*)e.msg));
        ThrowDatabaseException();
        return false;
    }
    return true;
}
Exemplo n.º 2
0
//read common data
bool CAirportsManager::loadARCDatabase(CAirportDatabase* pAirportDatabase)
{
	CString strSQL(_T(""));
	CADORecordset adoAirportRecordset;
	long lCount = 0 ;
	strSQL.Format(_T("SELECT * FROM TB_AIRPORTDB_AIRPORT"));
	try
	{
		CDatabaseADOConnetion::ExecuteSQLStatement(strSQL,lCount,adoAirportRecordset,pAirportDatabase->GetAirportConnection()) ;
	}
	catch (CADOException& e)
	{
		e.ErrorMessage();
		return false;
	}

	while(!adoAirportRecordset.IsEOF())
	{
		CAirport* pAirport = new CAirport;
		pAirport->loadDatabase(adoAirportRecordset);
		m_vAirports.push_back(pAirport);
		adoAirportRecordset.MoveNextData();
	}
	return true;
}
Exemplo n.º 3
0
DatabaseResultSet* OTLDatabaseLayer::RunQueryWithResults(const wxString& strQuery)
{
    OTLResultSet* pResultSet = NULL;
    try
    {
        wxArrayString QueryArray = ParseQueries(strQuery);

        if (QueryArray.size() > 0)
        {
            for (unsigned int i=0; i<(QueryArray.size()-1); i++)
            {
                wxCharBuffer sqlBuffer = ConvertToUnicodeStream(QueryArray[i]);
                std::string strSQL(sqlBuffer);
                strSQL = RemoveLastSemiColon(strSQL);
                //wxPrintf(_("RunQuery: '%s'\n"), strSQL.c_str());
                otl_stream otlStream(1,strSQL.c_str(),m_database);
            }

            // Deal with the last query separately
            wxCharBuffer sqlBuffer = ConvertToUnicodeStream(QueryArray[QueryArray.size()-1]);
            std::string strSQL(sqlBuffer);
            strSQL = RemoveLastSemiColon(strSQL);

            //wxPrintf(_("RunQuery: '%s'\n"), strSQL.c_str());
            otl_stream *otlInputStream = new otl_stream(1,strSQL.c_str(),m_database);
            {
                //fixme
                //pOTLStatement->setAutoCommit(m_bAutoCommit);
                pResultSet = new OTLResultSet(otlInputStream, true);
            }
        }
    }
    catch (otl_exception& e)
    {
        SetErrorCode(OTLDatabaseLayer::TranslateErrorCode(e.code));
        SetErrorMessage(ConvertFromUnicodeStream((char*)e.msg));
        ThrowDatabaseException();
        return NULL;
    }

    if (pResultSet)
        LogResultSetForCleanup(pResultSet);

    return pResultSet;
}
Exemplo n.º 4
0
//////new version database read and save
bool CAirportsManager::loadDatabase(CAirportDatabase* pAirportDatabase)
{
	ASSERT(pAirportDatabase);
	if(!pAirportDatabase)
		return false;

	Clear();

	CString strSQL(_T(""));
	CADORecordset adoAirportRecordset;
	long lCount = 0 ;
	strSQL.Format(_T("SELECT * FROM TB_AIRPORTDB_AIRPORT"));
	try
	{
		CDatabaseADOConnetion::ExecuteSQLStatement(strSQL,lCount,adoAirportRecordset,pAirportDatabase->GetAirportConnection()) ;
	}
	catch (CADOException& e)
	{
		e.ErrorMessage();
		return false;
	}

	while(!adoAirportRecordset.IsEOF())
	{
		 CAirport* pAirport = new CAirport;
		 pAirport->loadDatabase(adoAirportRecordset);
		 m_vAirports.push_back(pAirport);
		 adoAirportRecordset.MoveNextData();
	}

	//read all sector
	CADORecordset adoSectorRecordset;
	strSQL.Format(_T("SELECT * FROM TB_AIRPORTDB_SECTOR"));
	try
	{
		CDatabaseADOConnetion::ExecuteSQLStatement(strSQL,lCount,adoSectorRecordset,pAirportDatabase->GetAirportConnection());
	}
	catch (CADOException& e)
	{
		e.ErrorMessage();
		return false;
	}
	
	while(!adoSectorRecordset.IsEOF())
	{
		CSector* pSector = new CSector(this);
		pSector->loadDatabase(adoSectorRecordset,pAirportDatabase);
		m_vSectors.push_back(pSector);
		adoSectorRecordset.MoveNextData();
	}

	return true;
}
Exemplo n.º 5
0
bool CProbDistManager::loadDatabase(CAirportDatabase* pAirportDatabase)
{
	clear();

	CString strSQL(_T(""));
	strSQL.Format(_T("SELECT * FROM TB_AIRPORTDB_PRODISTMANAGER"));
	CADORecordset adoRecordset ;
	long count = 0;
	try
	{
		CDatabaseADOConnetion::ExecuteSQLStatement(strSQL,count,adoRecordset,pAirportDatabase->GetAirportConnection()) ; 
	}
	catch (CADOException& e)
	{
		e.ErrorMessage() ;
		return false;
	}
	CString sName(_T(""));
	CString sProbtype(_T(""));
	CString sProbdate(_T(""));
	int nID = -1 ;
	while (!adoRecordset.IsEOF())
	{
		adoRecordset.GetFieldValue(_T("PRODIST_NAME"),sName) ;
		adoRecordset.GetFieldValue(_T("PROBDISTDATA"),sProbdate) ;
		adoRecordset.GetFieldValue(_T("ID"),nID) ;
		ProbabilityDistribution* pProb = NULL ;
		try
		{
			pProb = ProbabilityDistribution::GetTerminalRelateProbDistributionFromDB (sProbdate);
		}
		catch (TwoStringError& e)
		{
			char string[256];
			e.getMessage (string);
			MessageBox(NULL,"Unknown Probability Distribution ","Error",MB_OK) ;
			adoRecordset.MoveNextData();
			continue ;
		}
		CProbDistEntry* pProbDist = new CProbDistEntry( sName, pProb );
		pProbDist->SetID(nID) ;
		m_vProbDist.push_back(pProbDist);

		adoRecordset.MoveNextData() ;
	}
	return true;
}
Exemplo n.º 6
0
bool CProbDistManager::deleteDatabase(CAirportDatabase* pAirportDatabase)
{
	ASSERT(pAirportDatabase);

	CString strSQL(_T(""));
	strSQL.Format(_T("DELETE * FROM TB_AIRPORTDB_PRODISTMANAGER"));
	try
	{
		CDatabaseADOConnetion::ExecuteSQLStatement(strSQL,pAirportDatabase->GetAirportConnection());
	}
	catch (CADOException& e)
	{
		e.ErrorMessage();
		return false;
	}
	return true;
}
Exemplo n.º 7
0
// PreparedStatement support
PreparedStatement* OTLDatabaseLayer::PrepareStatement(const wxString& strQuery)
{
    OTLPreparedStatement* pStatement = NULL;
    try
    {
        wxArrayString QueryArray = ParseQueries(strQuery);

        wxArrayString::iterator start = QueryArray.begin();
        wxArrayString::iterator stop = QueryArray.end();

        while (start != stop)
        {
            wxCharBuffer sqlBuffer = ConvertToUnicodeStream((*start));
            std::string strSQL(sqlBuffer);
            //fixme
            /*
               OTL::occi::Statement* pOTLStatement = m_pDatabase->createStatement(strSQL);
               if (pOTLStatement)
               {
                 pOTLStatement->setAutoCommit(m_bAutoCommit);
                 pStatement->AddStatement(pOTLStatement);
               }
            */
            start++;
        }
    }
    catch (otl_exception& e)
    {
        SetErrorCode(OTLDatabaseLayer::TranslateErrorCode(e.code));
        SetErrorMessage(ConvertFromUnicodeStream((char*)e.msg));
        wxDELETE(pStatement);
        ThrowDatabaseException();
        return NULL;
    }

    if (pStatement)
        LogStatementForCleanup(pStatement);

    return pStatement;
}
Exemplo n.º 8
0
STDMETHODIMP CBRecordset::Update(void)
{
	CBString strSQL(L"INSERT INTO [");
	CBString strValue;
	BOOL bFirst = TRUE;
	HRESULT hr;
	VARIANT varTemp = {VT_EMPTY};
	int i;

	CBLock l(&m_cs);

	if(m_pFields == NULL || m_pDatabase == NULL)return E_NOTIMPL;

	strSQL.Append(m_strTable);
	strSQL.Append(L"](", 2);

	for(i = 0; i < GetFieldCount(); i ++)
	{
		VARIANT* pvar = &m_arrayVariant[i];

		if(pvar->vt != VT_NULL && pvar->vt != VT_EMPTY)
		{
			if(bFirst)
			{
				strSQL.AppendChar(L'[');
				bFirst = FALSE;
			}else
			{
				strSQL.Append(L",[", 2);
				strValue.AppendChar(L',');
			}

			strSQL.Append(m_arrayFields[i]);
			strSQL.AppendChar(L']');

			if(pvar->vt == VT_DATE)
			{
				WCHAR wstr[22]; // "9999-99-99 99:99:99"
				WCHAR *pstr = wstr;
				CBDate d(pvar->date);
				SYSTEMTIME st;

				st = d;

				*pstr ++ = '\'';
				if(st.wYear != 1899 || st.wMonth != 12 || st.wDay != 30)
				{
					pstr = iToStr(st.wYear, pstr, 4);
					*pstr ++ = '-';

					pstr = iToStr(st.wMonth, pstr, 2);
					*pstr ++ = '-';

					pstr = iToStr(st.wDay, pstr, 2);
				}

				if(st.wHour || st.wMinute || st.wSecond)
				{
					if(pstr != wstr)
						*pstr ++ = ' ';

					pstr = iToStr(st.wHour, pstr, 2);
					*pstr ++ = ':';

					pstr = iToStr(st.wMinute, pstr, 2);
					*pstr ++ = ':';

					pstr = iToStr(st.wSecond, pstr, 2);
				}

				*pstr ++ = '\'';

				strValue.Append(wstr, pstr - wstr);
			}else if(pvar->vt == VT_BSTR)
			{
				BSTR TextString = pvar->bstrVal;

				CBAutoPtr<WCHAR> pszEncoded;
				UINT i, len = SysStringLen(TextString);
				UINT nPos = 0;
				WCHAR ch;

				pszEncoded.Allocate(len * 2 + 2);

				pszEncoded[nPos ++] = '\'';
				for(i = 0; i < len; i ++)
				{
					ch = TextString[i];

					if(ch == '\'')
						pszEncoded[nPos ++] = '\'';
					pszEncoded[nPos ++] = ch;
				}
				pszEncoded[nPos ++] = '\'';

				strValue.Append(pszEncoded, nPos);
			}else if(pvar->vt & VT_ARRAY)
			{
				CBVarPtr varPtr;
				CBAutoPtr<WCHAR> pszEncoded;
				static char HexChar[] = "0123456789ABCDEF";
				UINT i;

				hr = varPtr.Attach(pvar);
				if(FAILED(hr))return hr;

				pszEncoded.Allocate(varPtr.m_nSize * 2 + 3);

				pszEncoded[0] = L'x';
				pszEncoded[1] = L'\'';

				for(i = 0; i < varPtr.m_nSize; i ++)
				{
					pszEncoded[i * 2 + 2] = HexChar[varPtr.m_pData[i] >> 4];
					pszEncoded[i * 2 + 3] = HexChar[varPtr.m_pData[i] & 0xf];
				}

				pszEncoded[i * 2 + 2] = L'\'';

				strValue.Append(pszEncoded, i * 2 + 3);
			}else
			{
				hr = VariantChangeType(&varTemp, pvar, 0, VT_BSTR);
				if(FAILED(hr))return hr;

				if(varTemp.bstrVal && varTemp.bstrVal[0])
					strValue.Append(varTemp.bstrVal, SysStringLen(varTemp.bstrVal));
				else strValue.Append(L"\'\'", 2);

				VariantClear(&varTemp);
			}
		}
Exemplo n.º 9
0
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
      TCustomWinSocket *Socket)
{
     Timer1->Enabled=true;
     onEdit=true;
     String message = Socket->RemoteAddress;
     Memo1->Lines->Add("IP-адресс источника данных: "+message);
     int *a;
     int Bufer = Socket->ReceiveLength();
     char * Bufs = new char[Bufer+1];
     Socket->ReceiveBuf(Bufs, Bufer);

     int si=0;
     int k=0;
     String str[20];
     while(si<Bufer)
     {
          for (int i=si;i<Bufer;i++)
                        if((Bufs[i]=='/')||(i==Bufer-1))
                                {
                                  si=i+1;
                                  break;
                                } else str[k]+=Bufs[i];
        k++;
     }


     Bufs[Bufer+1]=' ';
     Bufs[Bufer]=' ';
     message=Bufs;

   bool flag=ADOTable1->Locate("Инвентарный номер",str[0],TLocateOptions()<<loCaseInsensitive);

    if((!flag)&&(k>8))
    {
     ADOTable1->Append();
     ADOTable1->FieldValues["Инвентарный номер"]=str[0];
     ADOTable1->FieldValues["Наименование"]=str[1];
     ADOTable1->FieldValues["Кабинет"]=str[2];
     ADOTable1->FieldValues["Подразделение"]=str[3];
     ADOTable1->FieldValues["РФ/РК"]=str[4];
     TDateTime CurrentDate = Date();
     ADOTable1->FieldValues["Дата инвентаризации"]=CurrentDate;
     ADOTable1->FieldValues["Дата списания"]=str[5];
     ADOTable1->FieldValues["Дата принятия"]=str[6];
     ADOTable1->FieldValues["Заводской номер"]=str[7];
     ADOTable1->FieldValues["Документ"]=str[8];
     ADOTable1->FieldValues["Состояние"]=str[9];
     ADOTable1->Post();
     Memo1->Lines->Add("Данные получены");
    }else
    {
      if(flag)Memo1->Lines->Add("Уже есть запись");
      if(k<8)Memo1->Lines->Add("Ошибка передачи, повторите попытку");
    }
    ADOQuery1->Active=false;
    ADOQuery1->SQL->Clear();
    AnsiString strSQL("SELECT Count(Главная.Наименование) AS [Количество], Наименование.Наименование FROM Наименование INNER JOIN Главная ON Наименование.Наименование = Главная.Наименование GROUP BY Наименование.Наименование HAVING (((Наименование.Наименование)=:ID));");
    ADOQuery1->SQL->Text=strSQL;
    ADOQuery1->Parameters->ParamByName("ID")->Value=str[1];
    ADOQuery1->Open();
    ADOQuery1->Active=true;
    ADOTable2->First();
    while(!ADOTable2->Eof) {
        if(ADOTable2->FieldByName("Наименование")->AsString==str[1])
        {
        ADOTable2->Edit();
        ADOTable2->FieldByName("Количество")->AsInteger = ADOQuery1->Fields->Fields[0]->AsInteger ;
        ADOTable2->Post();
        break;
        }
        ADOTable2->Next();
    }
    onEdit=false;
}