#include "StdAfx.h" #include "DataBaseAide.h" #include "DataBase.h" //构造函数 CDataBaseAide::CDataBaseAide(IUnknownEx * pIUnknownEx) { } //析构函数 CDataBaseAide::~CDataBaseAide() { } bool CDataBaseAide::SetDataBase(IUnknownEx *pIUnKnownEx) { m_pIDataBase = (IDataBase *)pIUnKnownEx; if (m_pIDataBase != NULL) return true; else return false; } VOID *CDataBaseAide::GetDataBase(REFGUID Guid, DWORD dwQueryVer) { if (m_pIDataBase != NULL) return m_pIDataBase; return NULL; } ///////////////////////////////// ////取数据 INT CDataBaseAide::GetValue_INT(LPCTSTR pszItem) { INT nValue; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, nValue); return nValue; } return 0; } UINT CDataBaseAide::GetValue_UINT(LPCTSTR pszItem) { UINT ulValue; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, ulValue); return ulValue; } return 0; } DOUBLE CDataBaseAide::GetValue_DOUBLE(LPCTSTR pszItem) { DOUBLE dbValue; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, dbValue); return dbValue; } return 0; } BYTE CDataBaseAide::GetValue_BYTE(LPCTSTR pszItem) { BYTE bValue; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, bValue); return bValue; } return 0; } LONG CDataBaseAide::GetValue_LONG(LPCTSTR pszItem) { LONG lValue; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, lValue); return lValue; } return 0; } WORD CDataBaseAide::GetValue_WORD(LPCTSTR pszItem) { WORD wValue; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, wValue); return wValue; } return 0; } DWORD CDataBaseAide::GetValue_DWORD(LPCTSTR pszItem) { DWORD ulValue; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, ulValue); return ulValue; } return 0; } FLOAT CDataBaseAide::GetValue_FLOAT(LPCTSTR pszItem) { return (FLOAT)GetValue_DOUBLE(pszItem); } //LONGLONG CDataBaseAide::GetValue_LONGLONG(LPCTSTR pszItem) LONG CDataBaseAide::GetValue_LONGLONG(LPCTSTR pszItem) { LONG llValue; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, llValue); return llValue; } return 0; } VOID CDataBaseAide::GetValue_VarValue(LPCTSTR pszItem, CDBVarValue & DBVarValue) { ASSERT(FALSE); return; } VOID CDataBaseAide::GetValue_SystemTime(LPCTSTR pszItem, SYSTEMTIME & SystemTime) { COleDateTime Time; if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, Time); Time.GetAsSystemTime(SystemTime); } return; } //获取参数 VOID CDataBaseAide::GetParameter(LPCTSTR pszItem, CDBVarValue & DBVarValue) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetParameter(pszItem, DBVarValue); } } //获取参数 VOID CDataBaseAide::GetParameter(LPCTSTR pszItem, LPSTR pszString, UINT uSize) { ASSERT(pszString!=NULL); if (m_pIDataBase != NULL && pszString != NULL) { CDBVarValue DBVarValue; ((CDataBase*)m_pIDataBase)->GetParameter(pszItem, DBVarValue); lstrcpynA(pszString, (LPCSTR)_bstr_t(DBVarValue), uSize); } } //获取参数 VOID CDataBaseAide::GetParameter(LPCTSTR pszItem, LPWSTR pszString, UINT uSize) { ASSERT(pszString!=NULL); if (m_pIDataBase != NULL && pszString != NULL) { CDBVarValue DBVarValue; ((CDataBase*)m_pIDataBase)->GetParameter(pszItem, DBVarValue); lstrcpynW(pszString, (LPCWSTR)_bstr_t(DBVarValue), uSize); } } //重置参数 VOID CDataBaseAide::ResetParameter() { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->ClearParameters(); ((CDataBase*)m_pIDataBase)->AddParameter(TEXT("RETURN_VALUE"), adInteger, adParamReturnValue, sizeof(long), _variant_t((long)0)); } } //获取字符 VOID CDataBaseAide::GetValue_String(LPCTSTR pszItem, LPSTR pszString, UINT uMaxCount) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, pszString, uMaxCount); } } //获取字符 VOID CDataBaseAide::GetValue_String(LPCTSTR pszItem, LPWSTR pszString, UINT uMaxCount) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, pszString, uMaxCount); } } //返回数值 LONG CDataBaseAide::GetReturnValue() { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetReturnValue(); } return 0; } //存储过程 LONG CDataBaseAide::ExecuteProcess(LPCTSTR pszSPName, bool bRecordset) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->ExecuteProcess(pszSPName, bRecordset); return ((CDataBase*)m_pIDataBase)->GetReturnValue(); } return -1; } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, INT nValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adInteger, adParamInput, sizeof(int), _variant_t((int)nValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, BYTE * pData,ULONG lSize, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { //变量定义 SAFEARRAYBOUND SafeArrayBound; ZeroMemory(&SafeArrayBound,sizeof(SafeArrayBound)); //设置变量 SafeArrayBound.lLbound=0L; SafeArrayBound.cElements=lSize; //变量定义 SAFEARRAY * pSafeArray=SafeArrayCreate(VT_UI1,1,&SafeArrayBound); //创建数组 for (LONG nIndex=0;nIndex<(LONG)lSize;nIndex++) { SafeArrayPutElement(pSafeArray,&nIndex,pData+nIndex); } //设置变量 VARIANT VarChunk; VariantClear(&VarChunk); VarChunk.parray=pSafeArray; VarChunk.vt=VT_ARRAY|VT_UI1; m_pIDataBase->AddParameter(pszItem,adLongVarBinary,adParamInput,lSize,CDBVarValue(VarChunk)); } } //获取参数 void CDataBaseAide::GetParameter(LPCTSTR pszItem, BYTE* szBuffer, UINT& uSize) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem,szBuffer,uSize); } } VOID CDataBaseAide::GetParameter(LPCTSTR lpFieldName, DataStream& kDataStream) { static BYTE s_TempData[MAX_ASYNCHRONISM_DATA]; UINT uGetSize = MAX_ASYNCHRONISM_DATA; GetParameter(lpFieldName,s_TempData,uGetSize); if (uGetSize != MAX_ASYNCHRONISM_DATA && uGetSize > 0) { kDataStream.pushValue((char*)s_TempData,uGetSize); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, UINT uValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adUnsignedInt, adParamInput, sizeof(unsigned int), _variant_t((unsigned int)uValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, LONG lValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adInteger, adParamInput, sizeof(long), _variant_t((long)lValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, LONGLONG lValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adBigInt, adParamInput, sizeof(__int64), _variant_t((__int64)lValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, BYTE cbValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adTinyInt, adParamInput, sizeof(BYTE), _variant_t((BYTE)cbValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, WORD wValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adUnsignedSmallInt, adParamInput, sizeof(unsigned short), _variant_t((unsigned short)wValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, DWORD dwValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adUnsignedInt, adParamInput, sizeof(unsigned long), _variant_t((unsigned long)dwValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, FLOAT fValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adSingle, adParamInput, sizeof(float), _variant_t((float)fValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, DOUBLE dValue, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adDouble, adParamInput, sizeof(double), _variant_t((double)dValue)); } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, LPCSTR pszString, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { if (lstrlenA(pszString) != 0) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adChar, adParamInput, lstrlenA(pszString), _variant_t(pszString)); } else { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adChar, adParamInput, lstrlenA(pszString) + 1, _variant_t(pszString)); } } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, LPCWSTR pszString, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { if (lstrlenW(pszString) != 0) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adWChar, adParamInput, lstrlenW(pszString), _variant_t(pszString)); } else { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adWChar, adParamInput, lstrlenW(pszString) + 1, _variant_t(pszString)); } } } //插入参数 VOID CDataBaseAide::AddParameter(LPCTSTR pszItem, SYSTEMTIME & SystemTime, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { DOUBLE dbValue = 0.0; SystemTimeToVariantTime(&SystemTime, &dbValue); ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adDBDate, adParamInput, sizeof(DATE), _variant_t((DATE)dbValue)); } } //插入参数 VOID CDataBaseAide::AddParameterOutput(LPCTSTR pszItem, LPSTR pszString, UINT uSize, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adVarChar, ParameterDirection, uSize, _variant_t(pszString)); } } //插入参数 VOID CDataBaseAide::AddParameterOutput(LPCTSTR pszItem, LPWSTR pszString, UINT uSize, ParameterDirectionEnum ParameterDirection) { if (m_pIDataBase != NULL) { ((CDataBase*)m_pIDataBase)->AddParameter(pszItem, adVarWChar, ParameterDirection, uSize, _variant_t(pszString)); } }