SQLStatementImpl.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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. //_stprintf();
  34. _itoa(nValue,szValue,10);
  35. m_saValues.Add(szValue);
  36. }
  37. CString CSQLStatementImpl::ReturnSQL()
  38. {
  39. // 释放CArray数组中预留的内存;
  40. m_saFields.FreeExtra();
  41. m_saValues.FreeExtra();
  42. int i = 0;
  43. if (m_nStatementKind == KIND_INSERT)
  44. {
  45. m_strSQL.Format(_T("insert into %s ("),m_strTableName);
  46. for ( i = 0; i < m_nCount-1; i++)
  47. {
  48. m_strSQL += m_saFields.ElementAt(i) + _T(",");
  49. }
  50. m_strSQL += m_saFields.ElementAt(m_nCount-1) + _T(") values ('");
  51. for ( i = 0; i < m_nCount-1; i++)
  52. {
  53. m_strSQL += m_saValues.ElementAt(i) + _T("','");
  54. }
  55. m_strSQL += m_saValues.ElementAt(m_nCount-1) + _T("') ");
  56. m_strSQL += m_strFilter;
  57. }
  58. else if( m_nStatementKind == KIND_UPDATE)
  59. {
  60. m_strSQL.Format(_T("update %s set "),m_strTableName);
  61. for ( i = 0; i < m_nCount-1; i++)
  62. {
  63. m_strSQL += m_saFields.ElementAt(i) + _T("='") + m_saValues.ElementAt(i)+ _T("',");
  64. }
  65. m_strSQL += m_saFields.ElementAt(m_nCount-1) + _T("='") + m_saValues.ElementAt(m_nCount-1)+ _T("' ");
  66. m_strSQL += m_strFilter;
  67. }
  68. return m_strSQL;
  69. }
  70. void CSQLStatementImpl::ReturnSQL(CString &strSQL)
  71. {
  72. // 释放CArray数组中预留的内存;
  73. m_saFields.FreeExtra();
  74. m_saValues.FreeExtra();
  75. int i = 0;
  76. if (m_nStatementKind == KIND_INSERT)
  77. {
  78. strSQL.Format(_T("insert into %s ("), m_strTableName);
  79. for (i = 0; i < m_nCount - 1; i++)
  80. {
  81. strSQL += m_saFields.ElementAt(i) + _T(",");
  82. }
  83. strSQL += m_saFields.ElementAt(m_nCount - 1) + _T(") values ('");
  84. for (i = 0; i < m_nCount - 1; i++)
  85. {
  86. strSQL += m_saValues.ElementAt(i) + _T("','");
  87. }
  88. strSQL += m_saValues.ElementAt(m_nCount - 1) + _T("') ");
  89. strSQL += m_strFilter;
  90. }
  91. else if( m_nStatementKind == KIND_UPDATE)
  92. {
  93. strSQL.Format(_T("update %s set "), m_strTableName);
  94. for (i = 0; i < m_nCount - 1; i++)
  95. {
  96. strSQL += m_saFields.ElementAt(i) + _T("='") + m_saValues.ElementAt(i) + _T("',");
  97. }
  98. strSQL += m_saFields.ElementAt(m_nCount - 1) + _T("='") + m_saValues.ElementAt(m_nCount - 1) + _T("' ");
  99. strSQL += m_strFilter;
  100. }
  101. }