SQLStatementImpl.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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
  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. return m_strSQL;
  68. }
  69. void CSQLStatementImpl::ReturnSQL(CString &strSQL)
  70. {
  71. // 释放CArray数组中预留的内存;
  72. m_saFields.FreeExtra();
  73. m_saValues.FreeExtra();
  74. int i = 0;
  75. if (m_nStatementKind == KIND_INSERT)
  76. {
  77. strSQL.Format(_T("insert into %s ("), m_strTableName);
  78. for (i = 0; i < m_nCount - 1; i++)
  79. {
  80. strSQL += m_saFields.ElementAt(i) + _T(",");
  81. }
  82. strSQL += m_saFields.ElementAt(m_nCount - 1) + _T(") values ('");
  83. for (i = 0; i < m_nCount - 1; i++)
  84. {
  85. strSQL += m_saValues.ElementAt(i) + _T("',");
  86. }
  87. strSQL += m_saValues.ElementAt(m_nCount - 1) + _T(") ");
  88. strSQL += m_strFilter;
  89. }
  90. else
  91. {
  92. strSQL.Format(_T("update %s set "), m_strTableName);
  93. for (i = 0; i < m_nCount - 1; i++)
  94. {
  95. strSQL += m_saFields.ElementAt(i) + _T("='") + m_saValues.ElementAt(i) + _T("',");
  96. }
  97. strSQL += m_saFields.ElementAt(m_nCount - 1) + _T("='") + m_saValues.ElementAt(m_nCount - 1) + _T("' ");
  98. strSQL += m_strFilter;
  99. }
  100. }