📄 mydatabase.cpp
字号:
// MyDatabase.cpp: implementation of the CMyDatabase class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MyDatabase.h"
#include "0000Thread.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMyDatabase::CMyDatabase()
: m_bOpenned(FALSE),
m_bUserOpenned(FALSE)
{
}
CMyDatabase::~CMyDatabase()
{
CloseDB();
CloseUserDB();
}
BOOL CMyDatabase::OpenDB()
{
if (m_bOpenned)
return TRUE;
TCHAR path[_MAX_PATH];
LPTSTR temp = NULL;
GetModuleFileName(NULL, path, _MAX_PATH);
temp = strrchr(path, '\\');
path[temp - path + 1] = '\0';
CString szLog;
try
{
CoInitialize(NULL);
CString szCmd;
szCmd.Format("File Name=%sTYDZ.udl", path);
TESTHR(m_pConn.CreateInstance(__uuidof(Connection)));
m_pConn->ConnectionString = _bstr_t(szCmd);
TESTHR(m_pConn->Open("", "", "", adConnectUnspecified));
m_bOpenned = TRUE;
}
catch (_com_error& e)
{
szLog.Format("连接数据库失败!ERROR=%s", (LPTSTR)e.Description());
theData.WriteLog(szLog, "-db");
return FALSE;
}
catch (...)
{
szLog.Format("连接数据库失败!ERROR=%s", "未知错误");
theData.WriteLog(szLog, "-db");
return FALSE;
}
return TRUE;
}
void CMyDatabase::CloseDB()
{
try
{
m_pConn->Close();
}
catch (...)
{
}
try
{
m_pConn.Release();
CoUninitialize();
}
catch (...)
{
}
m_pConn=NULL;
m_bOpenned = FALSE;
}
BOOL CMyDatabase::OpenUserDB()
{
if (m_bUserOpenned)
return TRUE;
TCHAR path[_MAX_PATH];
LPTSTR temp = NULL;
GetModuleFileName(NULL, path, _MAX_PATH);
temp = strrchr(path, '\\');
path[temp - path + 1] = '\0';
CString szLog;
try
{
CoInitialize(NULL);
CString szCmd;
szCmd.Format("File Name=%sUserDB.udl", path);
TESTHR(m_pUserConn.CreateInstance(__uuidof(Connection)));
m_pUserConn->ConnectionString = _bstr_t(szCmd);
TESTHR(m_pUserConn->Open("", "", "", adConnectUnspecified));
m_bUserOpenned = TRUE;
}
catch (_com_error& e)
{
szLog.Format("连接用户数据库失败!ERROR=%s", (LPTSTR)e.Description());
theData.WriteLog(szLog, "-db");
return FALSE;
}
catch (...)
{
szLog.Format("连接用户数据库失败!ERROR=%s", "未知错误");
theData.WriteLog(szLog, "-db");
return FALSE;
}
return TRUE;
}
void CMyDatabase::CloseUserDB()
{
try
{
m_pUserConn->Close();
}
catch (...)
{
}
try
{
m_pUserConn.Release();
CoUninitialize();
}
catch (...)
{
}
m_pUserConn=NULL;
m_bUserOpenned=FALSE;
}
BOOL CMyDatabase::OpenDB(LPCTSTR pszSQL, _ConnectionPtr& pConn)
{
CString szLog;
try
{
CoInitialize(NULL);
TESTHR(pConn.CreateInstance(__uuidof(Connection)));
pConn->ConnectionString = _bstr_t(pszSQL);
TESTHR(pConn->Open("", "", "", adConnectUnspecified));
}
catch (_com_error& e)
{
szLog.Format("连接数据库[%s]失败!ERROR=%s", pszSQL, (LPTSTR)e.Description());
theData.WriteLog(szLog, "-db");
return FALSE;
}
catch (...)
{
szLog.Format("连接数据库[%s]失败!ERROR=%s", pszSQL, "未知错误");
theData.WriteLog(szLog, "-db");
return FALSE;
}
return TRUE;
}
void CMyDatabase::CloseDB(_ConnectionPtr& pConn)
{
try
{
pConn->Close();
}
catch (...)
{
}
try
{
pConn.Release();
CoUninitialize();
}
catch (...)
{
}
}
int CMyDatabase::RegisterUser(LPCTSTR pszMobile, CString& szPassword)
{
if (!m_bUserOpenned)
{
CloseUserDB();
if (!OpenUserDB())
return -2;
}
CString szLog;
int nRet=0;
try
{
_CommandPtr pCmd;
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->ActiveConnection=m_pUserConn;
pCmd->CommandType=adCmdStoredProc;
pCmd->CommandText = L"sp_user_register";
pCmd->Parameters->Refresh();
pCmd->Parameters->GetItem(1l)->PutValue(pszMobile);
pCmd->Parameters->GetItem(2l)->PutValue(3l);
pCmd->Execute(NULL, NULL, adCmdStoredProc);
nRet=(long)pCmd->Parameters->GetItem(0l)->GetValue();
_variant_t var=pCmd->Parameters->GetItem(3l)->GetValue();
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
szPassword=(LPTSTR)_bstr_t(var);
}
catch (_com_error& e)
{
m_bUserOpenned=FALSE;
szLog.Format("sp_user_register(%s)中发生异常, ERROR=%s", pszMobile, (LPTSTR)e.Description());
theData.WriteLog(szLog,"-db");
return -2;
}
catch (...)
{
szLog.Format("sp_user_register(%s)中发生异常, 未知错误。", pszMobile);
theData.WriteLog(szLog,"-db");
return -2;
}
return nRet;
}
int CMyDatabase::GetCommonInfo(LPCOMMONINFO pInfo)
{
if (!m_bUserOpenned)
{
CloseUserDB();
if (!OpenUserDB())
return -2;
}
CString szLog;
int nRet=0;
try
{
_CommandPtr pCmd;
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->ActiveConnection=m_pUserConn;
pCmd->CommandType=adCmdStoredProc;
pCmd->CommandText = L"sp_commoninfo_by_mobile";
pCmd->Parameters->Refresh();
pCmd->Parameters->GetItem(1l)->PutValue(_bstr_t(pInfo->szMobile));
pCmd->Execute(NULL, NULL, adCmdStoredProc);
nRet=(long)pCmd->Parameters->GetItem(0l)->GetValue();
_variant_t var=pCmd->Parameters->GetItem(2l)->GetValue();
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pInfo->nProvince=(long)var;
var=pCmd->Parameters->GetItem(3l)->GetValue();
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pInfo->nArea=(long)var;
var=pCmd->Parameters->GetItem(4l)->GetValue();
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pInfo->szHotline=(LPTSTR)_bstr_t(var);
var=pCmd->Parameters->GetItem(5l)->GetValue();
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pInfo->szEntryno=(LPTSTR)_bstr_t(var);
var=pCmd->Parameters->GetItem(6l)->GetValue();
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pInfo->szGWID=(LPTSTR)_bstr_t(var);
}
catch (_com_error& e)
{
m_bUserOpenned=FALSE;
szLog.Format("sp_commoninfo_by_mobile(%s)中发生异常, ERROR=%s", pInfo->szMobile, (LPTSTR)e.Description());
theData.WriteLog(szLog,"-db");
return -2;
}
catch (...)
{
szLog.Format("sp_commoninfo_by_mobile(%s)中发生异常, 未知错误。", pInfo->szMobile);
theData.WriteLog(szLog,"-db");
return -2;
}
return nRet;
}
BOOL CMyDatabase::AddOneSubConfirm(LPCTSTR pszMobile, LPCTSTR pszCmd, LPCTSTR pszContent, LPCTSTR pszSrcTermId)
{
if (!m_bOpenned)
{
CloseDB();
if (!OpenDB())
return FALSE;
}
CString szLog;
BOOL bDone=FALSE;
try
{
_CommandPtr pCmd;
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->ActiveConnection = m_pConn;
pCmd->CommandText = L"sp_custom_sed_add";
pCmd->CommandType = adCmdStoredProc;
pCmd->Parameters->Refresh();
pCmd->Parameters->GetItem(1l)->PutValue(pszMobile);
pCmd->Parameters->GetItem(2l)->PutValue(pszCmd);
pCmd->Parameters->GetItem(3l)->PutValue(pszContent);
pCmd->Parameters->GetItem(4l)->PutValue(pszSrcTermId);
pCmd->Execute(NULL, NULL, adCmdStoredProc);
long nRet=(long)pCmd->Parameters->GetItem(0l)->GetValue();
if (nRet==0)
bDone=TRUE;
}
catch (_com_error& e)
{
m_bOpenned=FALSE;
szLog.Format("Failed call stored procedure sp_custom_sed_add('%s'), Description:%s",pszMobile,(LPTSTR)e.Description());
theData.WriteLog(szLog, "-db");
return FALSE;
}
catch(...)
{
szLog.Format("Failed call stored procedure sp_custom_sed_add('%s') for unknow error.",pszMobile);
theData.WriteLog(szLog, "-db");
return FALSE;
}
return bDone;
}
int CMyDatabase::GetSedHistory(LPCTSTR pszMobile, CString& szCmd, CString& szContent, CString& szSrcTermId, CString& szName, long& nID)
{
if (!m_bOpenned)
{
CloseDB();
if (!OpenDB())
return -2;
}
CString szLog;
try
{
_CommandPtr pCmd;
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->ActiveConnection = m_pConn;
pCmd->CommandText = L"sp_custom_sed_search";
pCmd->CommandType = adCmdStoredProc;
pCmd->Parameters->Refresh();
pCmd->Parameters->GetItem(1l)->PutValue(pszMobile);
pCmd->Parameters->GetItem(2l)->PutValue((LPCTSTR)szCmd);
pCmd->Execute(NULL, NULL, adCmdStoredProc);
long nRet=(long)pCmd->Parameters->GetItem(0l)->GetValue();
if (nRet!=0)
return nRet;
szCmd=(LPTSTR)_bstr_t(pCmd->Parameters->GetItem(2l)->GetValue());
szContent=(LPTSTR)_bstr_t(pCmd->Parameters->GetItem(3l)->GetValue());
szSrcTermId=(LPTSTR)_bstr_t(pCmd->Parameters->GetItem(4l)->GetValue());
szName=(LPTSTR)_bstr_t(pCmd->Parameters->GetItem(5l)->GetValue());
nID=(long)pCmd->Parameters->GetItem(6l)->GetValue();
}
catch (_com_error& e)
{
m_bOpenned=FALSE;
szLog.Format("Failed call stored procedure sp_custom_sed_search('%s'), Description:%s",pszMobile,(LPTSTR)e.Description());
theData.WriteLog(szLog, "-db");
return -2;
}
catch(...)
{
szLog.Format("Failed call stored procedure sp_custom_sed_search('%s') for unknow error.",pszMobile);
theData.WriteLog(szLog, "-db");
return -2;
}
return 0;
}
int CMyDatabase::SedHistoryDone(long nID)
{
if (!m_bOpenned)
{
CloseDB();
if (!OpenDB())
return -2;
}
CString szLog;
try
{
_CommandPtr pCmd;
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->ActiveConnection = m_pConn;
pCmd->CommandText = L"sp_custom_sed_done";
pCmd->CommandType = adCmdStoredProc;
pCmd->Parameters->Refresh();
pCmd->Parameters->GetItem(1l)->PutValue(nID);
pCmd->Parameters->GetItem(2l)->PutValue(1l);
pCmd->Execute(NULL, NULL, adCmdStoredProc);
long nRet=(long)pCmd->Parameters->GetItem(0l)->GetValue();
if (nRet!=0)
return nRet;
}
catch (_com_error& e)
{
m_bOpenned=FALSE;
szLog.Format("Failed call stored procedure sp_custom_sed_done('%d'), Description:%s",nID,(LPTSTR)e.Description());
theData.WriteLog(szLog, "-db");
return -2;
}
catch(...)
{
szLog.Format("Failed call stored procedure sp_custom_sed_done('%d') for unknow error.",nID);
theData.WriteLog(szLog, "-db");
return -2;
}
return 0;
}
int CMyDatabase::AddCustom(LPCTSTR PushType, LPCTSTR CustomerNo, LPCTSTR bSendTime, LPCTSTR eSendTime,
LPCTSTR ReceiverNo, LPCTSTR Param1, LPCTSTR Param2, long CustomMode)
{
if (!m_bOpenned)
{
CloseDB();
if (!OpenDB())
return -2;
}
CString szPassword;
int nRet=RegisterUser(CustomerNo, szPassword);
if (nRet==-6)
return -6;
else if (nRet<0 && nRet!=-3)
return -2;
CString szLog;
// int nRet = 0;
try
{
_CommandPtr pCmd;
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->ActiveConnection = m_pConn;
pCmd->CommandText = L"sp_usercustom_add";
pCmd->CommandType = adCmdStoredProc;
pCmd->Parameters->Refresh();
pCmd->Parameters->GetItem(1l)->PutValue(PushType);
pCmd->Parameters->GetItem(2l)->PutValue(CustomerNo);
pCmd->Parameters->GetItem(3l)->PutValue(bSendTime);
pCmd->Parameters->GetItem(4l)->PutValue(eSendTime);
pCmd->Parameters->GetItem(5l)->PutValue(ReceiverNo);
pCmd->Parameters->GetItem(6l)->PutValue(Param1);
pCmd->Parameters->GetItem(7l)->PutValue(Param2);
pCmd->Parameters->GetItem(8l)->PutValue((long)CustomMode);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -