elementDB.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include "stdafx.h"
  2. #include "elementDB.h"
  3. #include "elementTable.h"
  4. #include <DBStoreBase.h>
  5. namespace OTSClassifyEngine
  6. {
  7. CElementDB::CElementDB(CDBStoreBasePtr a_datastore)
  8. {
  9. m_tableInfo.reset(new CElementTable());
  10. myDB = CreateNewSQLiteDB(a_datastore,m_tableInfo);
  11. }
  12. CElementDB::~CElementDB()
  13. {
  14. }
  15. BOOL CElementDB::GetElements(CStandardItemPtr& pSTDMineral)
  16. {
  17. auto datastorePtr = GetDatastore();
  18. auto tableInfoPtr = GetTableInfo();
  19. if (!datastorePtr || !tableInfoPtr)
  20. {
  21. return FALSE;
  22. }
  23. CString sTableName = tableInfoPtr->GetTableName();
  24. if (!datastorePtr->IsTableExists(sTableName))
  25. {
  26. return FALSE;
  27. }
  28. CString strSql = _T("");
  29. strSql.Format(_T("select %s, %s, %s from %s where mineralID = %d order by %s"),
  30. tableInfoPtr->GetColumnName((int)CElementTable::ColumnID::N_MINERALID - (int)CElementTable::ColumnID::MIN),
  31. tableInfoPtr->GetColumnName((int)CElementTable::ColumnID::N_ID - (int)CElementTable::ColumnID::MIN),
  32. tableInfoPtr->GetColumnName((int)CElementTable::ColumnID::F_PERCENTAGE - (int)CElementTable::ColumnID::MIN),
  33. tableInfoPtr->GetTableName(),
  34. pSTDMineral->GetID(),
  35. tableInfoPtr->GetColumnName((int)CElementTable::ColumnID::N_MINERALID - (int)CElementTable::ColumnID::MIN));
  36. auto query = datastorePtr->QueryByCommand(strSql);
  37. if (!query || !query->IsValid())
  38. {
  39. return FALSE;
  40. }
  41. int iElementID = 0;
  42. double dPercentage = 0;
  43. while (!query->IsEOF())
  44. {
  45. CElement element;
  46. iElementID = query->GetColIntValue(1);
  47. dPercentage = query->GetColFloatValue(2);
  48. element.SetAtomNum(iElementID);
  49. element.SetPercentage(dPercentage);
  50. pSTDMineral->AddElement(element);
  51. query->NextRow();
  52. }
  53. return TRUE;
  54. }
  55. CDBTableBasePtr CElementDB::GetTableInfo()
  56. {
  57. /*if (!m_tableInfo)
  58. {
  59. m_tableInfo.reset(new CElementTable);
  60. }*/
  61. return m_tableInfo;
  62. }
  63. BOOL CElementDB::Init(const BOOL a_bClean /*= FALSE*/)
  64. {
  65. return myDB->Init(a_bClean);
  66. }
  67. BOOL CElementDB::CreateTable(const BOOL a_bForce /*= FALSE*/)
  68. {
  69. return myDB->CreateTable(a_bForce);
  70. }
  71. BOOL CElementDB::DeleteTable()
  72. {
  73. return myDB->DeleteTable();
  74. }
  75. BOOL CElementDB::RemoveAllRows()
  76. {
  77. return myDB->RemoveAllRows();
  78. }
  79. BOOL CElementDB::IsDBExist()
  80. {
  81. return myDB->IsDBExist();
  82. }
  83. OTSSQLITE::CDBStoreBasePtr CElementDB::GetDatastore()
  84. {
  85. return myDB->GetDatastore();
  86. }
  87. OTSSQLITE::CDBQueryBasePtr CElementDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/)
  88. {
  89. return myDB->GetTableQuery(a_sOrderColumnName);
  90. }
  91. }