Files
2022-10-26 12:25:11 +08:00

417 lines
9.6 KiB
C++

#include "stdafx.h"
#include "SqlLibHandler.h"
CSqlLibHandler::CSqlLibHandler()
{
}
CSqlLibHandler::~CSqlLibHandler()
{
Disconnect();
}
void CSqlLibHandler::Disconnect()
{
if(m_sqlconn.isConnected())
{
m_sqlconn.Disconnect();
}
}
void CSqlLibHandler::SetConnectInfo(char* strCon, char* szID, char* szPwd, SAClient_t clienttype)
{
strncpy(m_szConnect, strCon, 128);
strncpy(m_szId, szID, 64);
strncpy(m_szPwd, szPwd, 64);
m_clienttype = clienttype;
}
bool CSqlLibHandler::isResultSet()
{
return m_sqlcmd.isResultSet();
}
long CSqlLibHandler::RowsAffected()
{
return m_sqlcmd.RowsAffected();
}
bool CSqlLibHandler::ConnectDBMS()
{
try
{ if(m_sqlconn.isConnected()) m_sqlconn.Disconnect();
m_sqlconn.Connect(m_szConnect, m_szId, m_szPwd, m_clienttype);
m_sqlcmd.setConnection(&m_sqlconn);
}
catch(SAException &e)
{
SetError("DB Connect fail", m_szConnect, __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
void CSqlLibHandler::SetError(const char* szError, const char* szParamter, int nLineNum, const char* szFileName, const char* szDescription, int nErrorCode)
{
char szSrcInfo[MAX_PATH];
StringCchPrintf(szSrcInfo, MAX_PATH, " (FileName: %s, FileLineNum: %d)", szFileName, nLineNum);
m_strLastError = "ERROR:";
m_strLastError += szError;
m_strLastError += ", PARAMETER:";
m_strLastError += szParamter;
m_strLastError += ", DESCRIPTOIN:";
m_strLastError += szDescription;
m_strLastError += szSrcInfo;
m_nErrorCode = nErrorCode;
BILLING_LOG(WZPUBLIC::LEVEL_ERROR, "DataBase fail [%s] [%d]", GetLastErrorStr(), GetLastErrorCode());
}
int CSqlLibHandler::GetLastErrorCode()
{
return m_nErrorCode;
}
const char* CSqlLibHandler::GetLastErrorStr()
{
return m_strLastError.c_str();
}
bool CSqlLibHandler::SetQureyText(const char* szSQL)
{
try
{
m_sqlcmd.setCommandText(szSQL);
//m_sqlcmd.setOption("DBPROP_COMMONDTIMEOUT") = "500";
}
catch(SAException &e)
{
SetError("SetQureyText fail", szSQL , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::Exec()
{
try
{
//DWORD aa = GetTickCount();
m_sqlcmd.Execute();
//DWORD bb = GetTickCount();
//DWORD cc = bb - aa;
//int a = 0;
}
catch(SAException &e)
{
SetError("Exec fail", "" , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::FetchNext()
{
try
{
return m_sqlcmd.FetchNext();
}
catch(SAException &e)
{
SetError("FetchNext fail", "" , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::IsConnected()
{
return m_sqlconn.isConnected();
}
int CSqlLibHandler::GetCountFiled()
{
return m_sqlcmd.FieldCount();
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, tm& _time)
{
try
{
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsDateTime() = _time; break;
case FIELD_OUTPUT:
_time = m_sqlcmd.Field(szCol).asDateTime(); break;
case PARAM_OUTPUT:
_time = m_sqlcmd.Param(szCol).asDateTime(); break;
case FIELD_INPUT:
default:
return false;
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
break;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, long& nValue)
{
try
{
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsLong() = nValue; break;
case FIELD_OUTPUT:
m_sqlcmd.Field(szCol).isNull() ?
nValue = -1 : nValue = m_sqlcmd.Field(szCol).asLong(); break;
case PARAM_OUTPUT:
nValue = m_sqlcmd.Param(szCol).asLong(); break;
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, short& nValue)
{
try
{
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsShort() = nValue; break;
case FIELD_OUTPUT:
nValue = m_sqlcmd.Field(szCol).asShort(); break;
case PARAM_OUTPUT:
nValue = m_sqlcmd.Param(szCol).asShort(); break;
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, double& nValue)
{
try
{
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsDouble() = nValue; break;
case FIELD_OUTPUT:
nValue = m_sqlcmd.Field(szCol).asDouble(); break;
case PARAM_OUTPUT:
nValue = m_sqlcmd.Param(szCol).asDouble(); break;
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, char& nValue)
{
try
{
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsString() = nValue; break;
case FIELD_OUTPUT:
nValue = m_sqlcmd.Field(szCol).asString()[0]; break;
case PARAM_OUTPUT:
nValue = m_sqlcmd.Param(szCol).asString()[0]; break;
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, BYTE& nValue)
{
try
{
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsBytes() = nValue; break;
case FIELD_OUTPUT:
nValue = m_sqlcmd.Field(szCol).asBytes()[0]; break;
case PARAM_OUTPUT:
nValue = m_sqlcmd.Param(szCol).asBytes()[0]; break;
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, bool& nValue)
{
try
{
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsBool() = nValue; break;
case FIELD_OUTPUT:
nValue = m_sqlcmd.Field(szCol).asBool(); break;
case PARAM_OUTPUT:
nValue = m_sqlcmd.Param(szCol).asBool(); break;
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, char* nValue, int Size)
{
try
{
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsString() = nValue; break;
case FIELD_OUTPUT:
strncpy(nValue , m_sqlcmd.Field(szCol).asString(),
m_sqlcmd.Field(szCol).asString().GetLength() > Size ? Size : m_sqlcmd.Field(szCol).asString().GetLength()); break;
case PARAM_OUTPUT:
strncpy(nValue , m_sqlcmd.Param(szCol).asString(),
m_sqlcmd.Field(szCol).asString().GetLength() > Size ? Size : m_sqlcmd.Field(szCol).asString().GetLength()); break;
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, WCHAR* nValue, int Size)
{
try
{
USES_CONVERSION;
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsString() = W2A(nValue); break;
case FIELD_OUTPUT:
{
int Len = wcslen(A2W(m_sqlcmd.Field(szCol).asString()));
wcsncpy(nValue , A2W(m_sqlcmd.Field(szCol).asString()), Len > Size ? Size : Len); break;
}
case PARAM_OUTPUT:
{
int Len = wcslen(A2W(m_sqlcmd.Field(szCol).asString()));
wcsncpy(nValue , A2W(m_sqlcmd.Param(szCol).asString()), Len > Size ? Size : Len); break;
}
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}
bool CSqlLibHandler::ModifyValue(VALUE_TYPE vt, const char* szCol, WCHAR& nValue)
{
try
{
USES_CONVERSION;
switch(vt)
{
case PARAM_INPUT:
m_sqlcmd.Param(szCol).setAsString() = nValue; break;
case FIELD_OUTPUT:
nValue = A2W(m_sqlcmd.Field(szCol).asString())[0]; break;
case PARAM_OUTPUT:
nValue = A2W(m_sqlcmd.Param(szCol).asString())[0]; break;
case FIELD_INPUT:
default:
SetError("GetField fail", szCol , __LINE__, __FILE__, "Not Define VALUE_TYPE", 0);
return false;
}
}
catch(SAException &e)
{
SetError("GetField fail", szCol , __LINE__, __FILE__, (const char*)e.ErrText(), e.ErrNativeCode());
return false;
}
return true;
}