#include "stdafx.h" #include "elementDB.h" #include "elementTable.h" #include namespace OTSClassifyEngine { CElementDB::CElementDB(CDBStoreBasePtr a_datastore) { m_tableInfo.reset(new CElementTable()); myDB = CreateNewSQLiteDB(a_datastore,m_tableInfo); } CElementDB::~CElementDB() { } BOOL CElementDB::GetElements(CStandardItemPtr& pSTDMineral) { auto datastorePtr = GetDatastore(); auto tableInfoPtr = GetTableInfo(); if (!datastorePtr || !tableInfoPtr) { return FALSE; } CString sTableName = tableInfoPtr->GetTableName(); if (!datastorePtr->IsTableExists(sTableName)) { return FALSE; } CString strSql = _T(""); strSql.Format(_T("select %s, %s, %s from %s where mineralID = %d order by %s"), tableInfoPtr->GetColumnName((int)CElementTable::ColumnID::N_MINERALID - (int)CElementTable::ColumnID::MIN), tableInfoPtr->GetColumnName((int)CElementTable::ColumnID::N_ID - (int)CElementTable::ColumnID::MIN), tableInfoPtr->GetColumnName((int)CElementTable::ColumnID::F_PERCENTAGE - (int)CElementTable::ColumnID::MIN), tableInfoPtr->GetTableName(), pSTDMineral->GetID(), tableInfoPtr->GetColumnName((int)CElementTable::ColumnID::N_MINERALID - (int)CElementTable::ColumnID::MIN)); auto query = datastorePtr->QueryByCommand(strSql); if (!query || !query->IsValid()) { return FALSE; } int iElementID = 0; double dPercentage = 0; while (!query->IsEOF()) { CElement element; iElementID = query->GetColIntValue(1); dPercentage = query->GetColFloatValue(2); element.SetAtomNum(iElementID); element.SetPercentage(dPercentage); pSTDMineral->AddElement(element); query->NextRow(); } return TRUE; } CDBTableBasePtr CElementDB::GetTableInfo() { /*if (!m_tableInfo) { m_tableInfo.reset(new CElementTable); }*/ return m_tableInfo; } BOOL CElementDB::Init(const BOOL a_bClean /*= FALSE*/) { return myDB->Init(a_bClean); } BOOL CElementDB::CreateTable(const BOOL a_bForce /*= FALSE*/) { return myDB->CreateTable(a_bForce); } BOOL CElementDB::DeleteTable() { return myDB->DeleteTable(); } BOOL CElementDB::RemoveAllRows() { return myDB->RemoveAllRows(); } BOOL CElementDB::IsDBExist() { return myDB->IsDBExist(); } OTSSQLITE::CDBStoreBasePtr CElementDB::GetDatastore() { return myDB->GetDatastore(); } OTSSQLITE::CDBQueryBasePtr CElementDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/) { return myDB->GetTableQuery(a_sOrderColumnName); } }