SQLStatementImpl.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #include "StdAfx.h"
  2. #include "SQLStatementImpl.h"
  3. CSQLStatementImpl::CSQLStatementImpl()
  4. {
  5. m_nCount = 0;
  6. m_nSzie = 0;
  7. m_nStatementKind = 0;
  8. }
  9. CSQLStatementImpl::~CSQLStatementImpl( )
  10. {
  11. }
  12. void CSQLStatementImpl::AddElement(LPCTSTR lpField,LPCTSTR lpValue)
  13. {
  14. if ( m_nSzie == 0)
  15. {
  16. AfxMessageBox(_T("字段数量未设置"));
  17. return;
  18. }
  19. m_nCount++;
  20. m_saFields.Add(lpField);
  21. m_saValues.Add(lpValue);
  22. }
  23. void CSQLStatementImpl::AddElement(LPCTSTR lpField, CONST INT &nValue)
  24. {
  25. if (m_nSzie == 0)
  26. {
  27. AfxMessageBox(_T("字段数量未设置"));
  28. return;
  29. }
  30. m_nCount++;
  31. m_saFields.Add(lpField);
  32. TCHAR szValue[20] = _T("");
  33. _itot_s(nValue, szValue, 10);
  34. m_saValues.Add(szValue);
  35. }
  36. CString CSQLStatementImpl::ReturnSQL()
  37. {
  38. // 释放CArray数组中预留的内存;
  39. m_saFields.FreeExtra();
  40. m_saValues.FreeExtra();
  41. int i = 0;
  42. if (m_nStatementKind == KIND_INSERT)
  43. {
  44. m_strSQL.Format(_T("insert into %s ("),m_strTableName);
  45. for ( i = 0; i < m_nCount-1; i++)
  46. {
  47. m_strSQL += m_saFields.ElementAt(i) + _T(",");
  48. }
  49. m_strSQL += m_saFields.ElementAt(m_nCount-1) + _T(") values ('");
  50. for ( i = 0; i < m_nCount-1; i++)
  51. {
  52. m_strSQL += m_saValues.ElementAt(i) + _T("','");
  53. }
  54. m_strSQL += m_saValues.ElementAt(m_nCount-1) + _T("') ");
  55. m_strSQL += m_strFilter;
  56. }
  57. else if( m_nStatementKind == KIND_UPDATE)
  58. {
  59. m_strSQL.Format(_T("update %s set "),m_strTableName);
  60. for ( i = 0; i < m_nCount-1; i++)
  61. {
  62. m_strSQL += m_saFields.ElementAt(i) + _T("='") + m_saValues.ElementAt(i)+ _T("',");
  63. }
  64. m_strSQL += m_saFields.ElementAt(m_nCount-1) + _T("='") + m_saValues.ElementAt(m_nCount-1)+ _T("' ");
  65. m_strSQL += m_strFilter;
  66. }
  67. else if ( m_nStatementKind == SELECT_LKIE_OR)
  68. {
  69. m_strSQL.Format(_T("select * from %s where "),m_strTableName);
  70. for( i = 0; i < m_nCount -1; i++)
  71. {
  72. m_strSQL += m_saFields.ElementAt(i) + _T(" like '%s") + m_saValues.ElementAt(i) + _T("%' or ");
  73. }
  74. m_strSQL += m_saFields.ElementAt(i) + _T(" like '%s") + m_saValues.ElementAt(i) + _T("%s'");
  75. }
  76. return m_strSQL;
  77. }
  78. void CSQLStatementImpl::ReturnSQL(CString &strSQL)
  79. {
  80. // 释放CArray数组中预留的内存;
  81. m_saFields.FreeExtra();
  82. m_saValues.FreeExtra();
  83. int i = 0;
  84. if (m_nStatementKind == KIND_INSERT)
  85. {
  86. strSQL.Format(_T("insert into %s ("), m_strTableName);
  87. for (i = 0; i < m_nCount - 1; i++)
  88. {
  89. strSQL += m_saFields.ElementAt(i) + _T(",");
  90. }
  91. strSQL += m_saFields.ElementAt(m_nCount - 1) + _T(") values ('");
  92. for (i = 0; i < m_nCount - 1; i++)
  93. {
  94. strSQL += m_saValues.ElementAt(i) + _T("','");
  95. }
  96. strSQL += m_saValues.ElementAt(m_nCount - 1) + _T("') ");
  97. strSQL += m_strFilter;
  98. }
  99. else if( m_nStatementKind == KIND_UPDATE)
  100. {
  101. strSQL.Format(_T("update %s set "), m_strTableName);
  102. for (i = 0; i < m_nCount - 1; i++)
  103. {
  104. strSQL += m_saFields.ElementAt(i) + _T("='") + m_saValues.ElementAt(i) + _T("',");
  105. }
  106. strSQL += m_saFields.ElementAt(m_nCount - 1) + _T("='") + m_saValues.ElementAt(m_nCount - 1) + _T("' ");
  107. strSQL += m_strFilter;
  108. }
  109. else if ( m_nStatementKind == SELECT_LKIE_OR)
  110. {
  111. strSQL.Format(_T("select * from %s where "),m_strTableName);
  112. for( i = 0; i < m_nCount -1; i++)
  113. {
  114. strSQL += m_saFields.ElementAt(i) + _T(" like '%s") + m_saValues.ElementAt(i) + _T("%' or ");
  115. }
  116. strSQL += m_saFields.ElementAt(i) + _T(" like '%s") + m_saValues.ElementAt(i) + _T("%'");
  117. }
  118. }