// 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; }
//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; }
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; }
//////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; }
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; }
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; }
// 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; }
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); } }
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; }