SQLStatementImpl.cpp 2.6 KB

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