#include "StdAfx.h" #include "SQLStatementImpl.h" CSQLStatementImpl::CSQLStatementImpl() { m_nCount = 0; m_nSzie = 0; m_nStatementKind = 0; } CSQLStatementImpl::~CSQLStatementImpl( ) { } void CSQLStatementImpl::AddElement(LPCTSTR lpField,LPCTSTR lpValue) { if ( m_nSzie == 0) { AfxMessageBox(_T("字段数量未设置")); return; } m_nCount++; m_saFields.Add(lpField); m_saValues.Add(lpValue); } void CSQLStatementImpl::AddElement(LPCTSTR lpField, CONST INT &nValue) { if (m_nSzie == 0) { AfxMessageBox(_T("字段数量未设置")); return; } m_nCount++; m_saFields.Add(lpField); TCHAR szValue[20] = _T(""); _itot_s(nValue, szValue, 10); m_saValues.Add(szValue); } CString CSQLStatementImpl::ReturnSQL() { // 释放CArray数组中预留的内存; m_saFields.FreeExtra(); m_saValues.FreeExtra(); int i = 0; if (m_nStatementKind == KIND_INSERT) { m_strSQL.Format(_T("insert into %s ("),m_strTableName); for ( i = 0; i < m_nCount-1; i++) { m_strSQL += m_saFields.ElementAt(i) + _T(","); } m_strSQL += m_saFields.ElementAt(m_nCount-1) + _T(") values ('"); for ( i = 0; i < m_nCount-1; i++) { m_strSQL += m_saValues.ElementAt(i) + _T("','"); } m_strSQL += m_saValues.ElementAt(m_nCount-1) + _T("') "); m_strSQL += m_strFilter; } else if( m_nStatementKind == KIND_UPDATE) { m_strSQL.Format(_T("update %s set "),m_strTableName); for ( i = 0; i < m_nCount-1; i++) { m_strSQL += m_saFields.ElementAt(i) + _T("='") + m_saValues.ElementAt(i)+ _T("',"); } m_strSQL += m_saFields.ElementAt(m_nCount-1) + _T("='") + m_saValues.ElementAt(m_nCount-1)+ _T("' "); m_strSQL += m_strFilter; } else if ( m_nStatementKind == SELECT_LKIE_OR) { m_strSQL.Format(_T("select * from %s where "),m_strTableName); for( i = 0; i < m_nCount -1; i++) { m_strSQL += m_saFields.ElementAt(i) + _T(" like '%s") + m_saValues.ElementAt(i) + _T("%' or "); } m_strSQL += m_saFields.ElementAt(i) + _T(" like '%s") + m_saValues.ElementAt(i) + _T("%s'"); } return m_strSQL; } void CSQLStatementImpl::ReturnSQL(CString &strSQL) { // 释放CArray数组中预留的内存; m_saFields.FreeExtra(); m_saValues.FreeExtra(); int i = 0; if (m_nStatementKind == KIND_INSERT) { strSQL.Format(_T("insert into %s ("), m_strTableName); for (i = 0; i < m_nCount - 1; i++) { strSQL += m_saFields.ElementAt(i) + _T(","); } strSQL += m_saFields.ElementAt(m_nCount - 1) + _T(") values ('"); for (i = 0; i < m_nCount - 1; i++) { strSQL += m_saValues.ElementAt(i) + _T("','"); } strSQL += m_saValues.ElementAt(m_nCount - 1) + _T("') "); strSQL += m_strFilter; } else if( m_nStatementKind == KIND_UPDATE) { strSQL.Format(_T("update %s set "), m_strTableName); for (i = 0; i < m_nCount - 1; i++) { strSQL += m_saFields.ElementAt(i) + _T("='") + m_saValues.ElementAt(i) + _T("',"); } strSQL += m_saFields.ElementAt(m_nCount - 1) + _T("='") + m_saValues.ElementAt(m_nCount - 1) + _T("' "); strSQL += m_strFilter; } else if ( m_nStatementKind == SELECT_LKIE_OR) { strSQL.Format(_T("select * from %s where "),m_strTableName); for( i = 0; i < m_nCount -1; i++) { strSQL += m_saFields.ElementAt(i) + _T(" like '%s") + m_saValues.ElementAt(i) + _T("%' or "); } strSQL += m_saFields.ElementAt(i) + _T(" like '%s") + m_saValues.ElementAt(i) + _T("%'"); } }