123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863 |
- #include "StdAfx.h"
- #include "DBInterface.h"
- #define MSG_SHOWPROMPTING WM_USER + 101
- extern HWND g_hwnd;
- BOOL CDBInterface::m_bEndofThread = FALSE;
- CDBInterface::CDBInterface(void)
- {
- m_bOpen = FALSE;
- m_bSolve = FALSE;
- m_pdbInstance = NULL;
- m_hReConnectEvent = NULL;
- m_hReConnectThread = NULL;
- m_hWaitableTimer = NULL;
- }
- CDBInterface::~CDBInterface(void)
- {
- CloseDatabase();
- EndofThread();
- }
- BOOL CDBInterface::SolveDBError(CONST DWORD &dwError,LPCTSTR lpErrorString)
- {
- AutoThreadSection aSection(&s_critSection);
- if(m_bSolve) return TRUE;
- switch(dwError)
- {
- case ERROR_PIPE_NOT_CONNECTED:
- case WSAECONNRESET:
- case WSAECONNABORTED:
- {
- m_bSolve = TRUE;
- m_strConnectErrorDescriptor = lpErrorString;
- // 启用重连线程;
- CloseDatabase();
- StartThread();
- LOG4C_NO_FILENUM((LOG_NOTICE,"数据库连接失败,请检查配置信息或数据库服务是否启动!"));
- }
- break;
- default:
- // 其他错误,输出日志;
- #ifdef UNICODE
- LOG4C_NO_FILENUM((LOG_NOTICE,"数据库错误信息:%s",CW2A(lpErrorString)));
- #else
- LOG4C_NO_FILENUM((LOG_NOTICE,"数据库错误信息:%s",lpErrorString));
- #endif
- break;
- }
- return FALSE;
- }
- int CDBInterface::StartThread()
- {
- #if JEFF_TEST_OFF
- // 计时器;
- SYSTEMTIME st;
- FILETIME ftLocal, ftUTC;
- LARGE_INTEGER liUTC;
- st.wYear = 2014; // Year
- st.wMonth = 12; // January
- st.wDayOfWeek = 0; // Ignored
- st.wDay = 1; // The first of the month
- st.wHour = 13; // 1PM
- st.wMinute = 0; // 0 minutes into the hour
- st.wSecond = 0; // 0 seconds into the minute
- st.wMilliseconds = 0; // 0 milliseconds into the second
- SystemTimeToFileTime(&st, &ftLocal);
- // Convert local time to UTC time.
- LocalFileTimeToFileTime(&ftLocal, &ftUTC);
- // Convert FILETIME to LARGE_INTEGER because of different alignment.
- liUTC.LowPart = ftUTC.dwLowDateTime;
- liUTC.HighPart = ftUTC.dwHighDateTime;
- //liUTC.QuadPart = -(2*10000000);
- m_bEndofThread = FALSE;
- m_hWaitableTimer = CreateWaitableTimer(NULL,FALSE,NULL);
- const int nTimerUnitsPerSecond = 10000000;
- SetWaitableTimer(m_hWaitableTimer,&liUTC,3*60*60*1000,NULL,NULL,FALSE); // 3小时执行一次;
- #else
- if(m_hReConnectEvent == NULL)
- m_hReConnectEvent = CreateEvent(NULL, TRUE, FALSE, NULL); // 无信号事件;
- if (m_hReConnectEvent == NULL)
- {
- m_bSolve = FALSE;
- return -1;
- }
- if(m_hReConnectThread == NULL)
- m_hReConnectThread = CreateThread(NULL, 0, ReConnectDatabaseThread, this, 0, NULL);
- if (m_hReConnectThread == NULL)
- {
- m_bSolve = FALSE;
- return -1;
- }
- else
- {
- CloseHandle(m_hReConnectThread);
- m_hReConnectThread = NULL;
- }
- #endif
- return 0;
- }
- int CDBInterface::EndofThread()
- {
- #if JEFF_TEST_OFF
- // 重置等待时间,立即返回;
- LARGE_INTEGER li;
- const int nTimerUnitsPerSecond = 10000000;
- li.QuadPart = 1*nTimerUnitsPerSecond;
- SetWaitableTimer(m_hWaitableTimer,&li,NULL,NULL,NULL,FALSE);
- m_bEndofThread = TRUE;
- #else
- if (m_hReConnectEvent)
- SetEvent(m_hReConnectEvent);
- if (m_hReConnectThread)
- {
- if (WaitForSingleObject(m_hReConnectThread, INFINITE) != WAIT_TIMEOUT)
- CloseHandle(m_hReConnectThread);
- m_hReConnectThread = NULL;
- }
- if (m_hReConnectEvent)
- CloseHandle(m_hReConnectEvent);
- m_hReConnectEvent = NULL;
- #endif
- return 0L;
- }
- DWORD CDBInterface::ReConnectDatabaseThread(LPVOID lpPara)
- {
- CDBInterface *pInstance = (CDBInterface*)lpPara;
- #if JEFF_TEST_OFF
- while ( !m_bEndofThread )
- {
- WaitForSingleObject(pInstance->m_hWaitableTimer,INFINITE);
- if ( !m_bEndofThread)
- {
- if( pInstance->OpenDatabase())
- {
- pInstance->m_bSolve = FALSE;
- break;
- }
- }
- }
- if (pInstance->m_hReConnectEvent)
- CloseHandle(pInstance->m_hReConnectEvent);
- pInstance->m_hReConnectEvent = NULL;
- #else
- do
- {
- if( pInstance->OpenDatabase())
- {
- pInstance->m_bSolve = FALSE;
- break;
- }
- } while (WaitForSingleObject(pInstance->m_hReConnectEvent,5000L) == WAIT_TIMEOUT);
- if (pInstance->m_hReConnectEvent)
- CloseHandle(pInstance->m_hReConnectEvent);
- pInstance->m_hReConnectEvent = NULL;
- #endif
- return 0L;
- }
- BOOL CDBInterface::OpenDatabase(LPCTSTR lpSQLConnectString /* = NULL */)
- {
- AutoThreadSection aSection(&s_critSection);
- if (m_pdbInstance == NULL)
- {
- m_pdbInstance = new CDatabase;
- if (lpSQLConnectString == NULL)
- lpSQLConnectString = g_szConnectString;
- try
- {
- m_pdbInstance->OpenEx(lpSQLConnectString, CDatabase::noOdbcDialog);
- }
- catch (CDBException* e)
- {
- //m_strConnectErrorDescriptor = e->m_strError;
- delete m_pdbInstance;
- m_pdbInstance = NULL;
- e->Delete();
- return FALSE;
- }
- m_bOpen = TRUE;
- }
- return m_bOpen;
- }
- void CDBInterface::CloseDatabase()
- {
- m_bOpen = FALSE;
- if (m_pdbInstance)
- delete m_pdbInstance;
- m_pdbInstance = NULL;
- }
- BOOL CDBInterface::Execute(LPCTSTR lpSQL)
- {
- try
- {
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
- //m_pdbInstance->BeginTrans();
- m_pdbInstance->ExecuteSQL(lpSQL);
- //m_pdbInstance->CommitTrans();
- }
- catch (CDBException* e)
- {
- //m_pdbInstance->Rollback();
- #ifdef UNICODE
- LOG4C_NO_FILENUM((LOG_NOTICE,"%s",CW2A(e->m_strError)));
- #else
- LOG4C_NO_FILENUM((LOG_NOTICE,"%s",e->m_strError));
- #endif
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE;
- }
- return TRUE;
- }
- int CDBInterface::GetSelectCount(LPCTSTR lpTableName, LPCTSTR lpFilter)
- {
- try
- {
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return -1;
- CString strSQL;
- if (lpFilter && _tcsicmp(lpFilter, _T("")) != 0)
- strSQL.Format(_T("select count(*) as cot from %s where %s"), lpTableName, lpFilter);
- else
- strSQL.Format(_T("select count(*) as cot from %s"), lpTableName);
- CRecordset tagRecordset(m_pdbInstance);
- tagRecordset.Open(CRecordset::forwardOnly, strSQL);
- tagRecordset.GetFieldValue(_T("cot"), strSQL);
- tagRecordset.Close();
- return _ttoi(strSQL);
- }
- catch (CDBException* e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return -1;
- }
- }
- BOOL CDBInterface::GetDBViewDindanclientRecord(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter /* = NULL */)
- {
- try{
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
-
- CRecordset myset(m_pdbInstance);
- static CString strSQL;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- strSQL.Format(_T("select count(*) as cot from dindanclient where %s"), lpfilter);
- else
- strSQL = _T("select count(*) as cot from dindanclient");
- #if defined(_DEBUG) && defined(UNICODE)
- LOG4C_NO_FILENUM((LOG_NOTICE,"订单表:%s",CW2A(lpfilter)));
- LOG4C_NO_FILENUM((LOG_NOTICE,"订单表:%s",CW2A(strSQL)));
- #else
- LOG4C_NO_FILENUM((LOG_NOTICE,"订单表:%s",lpfilter));
- LOG4C_NO_FILENUM((LOG_NOTICE,"订单表:%s",strSQL));
- #endif
-
- myset.Open(CRecordset::forwardOnly, strSQL);
- myset.GetFieldValue(_T("cot"), strSQL);
- myset.Close();
- if (_ttol(strSQL) == 0) return TRUE;
- strListArray.SetSize(_ttol(strSQL), 1);
- CDBViewDindanclient rsSt;
- rsSt.m_pDatabase = m_pdbInstance;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- rsSt.m_strFilter = lpfilter;
- rsSt.Open();
- INT_PTR nIndex = 0;
- while (!rsSt.IsEOF())
- {
- strListArray.ElementAt(nIndex).RemoveAll();
- if (CHILD_VERSION)
- {
- strListArray.ElementAt(nIndex).Add(rsSt.m_name1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthday1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check1);
- }
- else
- {
- strListArray.ElementAt(nIndex).Add(rsSt.m_name1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthday1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthday2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_time3);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check3);
- }
- nIndex++;
- rsSt.MoveNext();
- if (strListArray.GetSize() <= nIndex)break;
- }
- rsSt.Close();
- strListArray.SetSize(nIndex, 1);
- }
- catch (CDBException *e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE;
- }
- return TRUE;
- }
- BOOL CDBInterface::GetTableChildmsg(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter /* = NULL */)
- {
- try{
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
- CRecordset myset(m_pdbInstance);
- static CString strSQL;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- strSQL.Format(_T("select count(*) as cot from childmsg where %s"), lpfilter);
- else
- strSQL = _T("select count(*) as cot from childmsg");
- #if defined(_DEBUG) && defined(UNICODE)
- LOG4C_NO_FILENUM((LOG_NOTICE,"短信配置表:%s",CW2A(lpfilter)));
- LOG4C_NO_FILENUM((LOG_NOTICE,"短信配置表:%s",CW2A(strSQL)));
- #else
- LOG4C_NO_FILENUM((LOG_NOTICE,"短信配置表:%s",lpfilter));
- LOG4C_NO_FILENUM((LOG_NOTICE,"短信配置表:%s",strSQL));
- #endif
- myset.Open(CRecordset::forwardOnly, strSQL);
- myset.GetFieldValue(_T("cot"), strSQL);
- myset.Close();
- if (_ttol(strSQL) == 0) return TRUE;
- strListArray.SetSize(_ttol(strSQL), 1);
- CTableChildmsg rsSt;
- rsSt.m_pDatabase = m_pdbInstance;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- rsSt.m_strFilter = lpfilter;
- rsSt.Open();
- INT_PTR nIndex = 0;
- while (!rsSt.IsEOF())
- {
- strListArray.ElementAt(nIndex).RemoveAll();
- strListArray.ElementAt(nIndex).Add(rsSt.m_check); // 是否自动发送;
- if ( IsDigit(rsSt.m_days))
- {
- strListArray.ElementAt(nIndex).Add(rsSt.m_days); // 满x天;
- }
- else
- {
- if (rsSt.m_days == "一周")
- strSQL.Format(_T("%d"),7);
- else if (rsSt.m_days == "两周")
- strSQL.Format(_T("%d"),14);
- else if (rsSt.m_days == "三周")
- strSQL.Format(_T("%d"),21);
- else if (rsSt.m_days == "一个月" || rsSt.m_days == _T("满月"))
- strSQL.Format(_T("%d"),30);
- else if (rsSt.m_days == "两个月")
- strSQL.Format(_T("%d"),61);
- else if (rsSt.m_days == "三个月")
- strSQL.Format(_T("%d"),91);
- else if (rsSt.m_days == "四个月")
- strSQL.Format(_T("%d"),122);
- else if (rsSt.m_days == "五个月")
- strSQL.Format(_T("%d"),152);
- else if (rsSt.m_days == "六个月")
- strSQL.Format(_T("%d"),183);
- else if (rsSt.m_days == "七个月")
- strSQL.Format(_T("%d"),213);
- else if (rsSt.m_days == "八个月")
- strSQL.Format(_T("%d"),244);
- else if (rsSt.m_days == "九个月")
- strSQL.Format(_T("%d"),274);
- else if ( rsSt.m_days == _T("一岁"))
- strSQL.Format(_T("%d"),366);
- else if ( rsSt.m_days == _T("两岁"))
- strSQL.Format(_T("%d"),732);
- else if ( rsSt.m_days == _T("三岁"))
- strSQL.Format(_T("%d"),1098);
- strListArray.ElementAt(nIndex).Add(strSQL); // 满x天;
- }
- strListArray.ElementAt(nIndex).Add(rsSt.m_content); // 短信内容;
- strListArray.ElementAt(nIndex).Add(rsSt.m_mode); // ==0同样是儿童的;==1:表示儿童; ==2:表示孕妇怀孕
- nIndex++;
- rsSt.MoveNext();
- if (strListArray.GetSize() <= nIndex)break;
- }
- rsSt.Close();
- strListArray.SetSize(nIndex, 1);
- }
- catch (CDBException *e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE;
- }
- return TRUE;
- }
- BOOL CDBInterface::GetTableClient2(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter /* = NULL */)
- {
- try{
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
- CRecordset myset(m_pdbInstance);
- static CString strSQL;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- strSQL.Format(_T("select count(*) as cot from client2 where %s"), lpfilter);
- else
- strSQL = _T("select count(*) as cot from client2");
- #if _DEBUG
- LOG4C_NO_FILENUM((LOG_NOTICE,"老客户表:%s",CW2A(lpfilter)));
- LOG4C_NO_FILENUM((LOG_NOTICE,"表客户表:%s",CW2A(strSQL)));
- #endif
- myset.Open(CRecordset::forwardOnly, strSQL);
- myset.GetFieldValue(_T("cot"), strSQL);
- myset.Close();
- if (_ttol(strSQL) == 0) return TRUE;
- strListArray.SetSize(_ttol(strSQL), 1);
- CTableClient2 rsSt;
- rsSt.m_pDatabase = m_pdbInstance;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- rsSt.m_strFilter = lpfilter;
- rsSt.Open();
- INT_PTR nIndex = 0;
- static CString strTemp;
- while (!rsSt.IsEOF())
- {
- strTemp.Format(_T("%ld"), rsSt.m_id);
- strListArray.ElementAt(nIndex).RemoveAll();
- #ifdef LYFZ_VERSION
- strListArray.ElementAt(nIndex).Add(strTemp);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_ren);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone);
- strListArray.ElementAt(nIndex).Add(rsSt.m_qq);
- strListArray.ElementAt(nIndex).Add(rsSt.m_addr);
- strListArray.ElementAt(nIndex).Add(rsSt.m_from);
- strListArray.ElementAt(nIndex).Add(rsSt.m_status);
- strListArray.ElementAt(nIndex).Add(rsSt.m_bz);
- strListArray.ElementAt(nIndex).Add(rsSt.m_date);
- strListArray.ElementAt(nIndex).Add(rsSt.m_pinyin);
- strListArray.ElementAt(nIndex).Add(rsSt.m_pinyin2);
- #else
- strListArray.ElementAt(nIndex).Add(strTemp); // 0.
- strListArray.ElementAt(nIndex).Add(rsSt.m_name); // 1.
- strListArray.ElementAt(nIndex).Add(rsSt.m_sex); // 2.
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone); // 3.
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthday); // 4.
- strListArray.ElementAt(nIndex).Add(rsSt.m_date); // 5.
- strListArray.ElementAt(nIndex).Add(rsSt.m_check1); // 6.
- #endif
- nIndex++;
- rsSt.MoveNext();
- if (strListArray.GetSize() <= nIndex)break;
- }
- rsSt.Close();
- strListArray.SetSize(nIndex, 1);
- }
- catch (CDBException *e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE;
- }
- return TRUE;
- }
- BOOL CDBInterface::GetTableClient3(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter /* = NULL */)
- {
- try{
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
- CRecordset myset(m_pdbInstance);
- static CString strSQL;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- strSQL.Format(_T("select count(*) as cot from client3 where %s"), lpfilter);
- else
- strSQL = _T("select count(*) as cot from client3");
- #if _DEBUG
- LOG4C_NO_FILENUM((LOG_NOTICE,"意向客户表:%s",CW2A(lpfilter)));
- LOG4C_NO_FILENUM((LOG_NOTICE,"意向客户表:%s",CW2A(strSQL)));
- #endif
- myset.Open(CRecordset::forwardOnly, strSQL);
- myset.GetFieldValue(_T("cot"), strSQL);
- myset.Close();
- if (_ttol(strSQL) == 0) return TRUE;
- strListArray.SetSize(_ttol(strSQL), 1);
- CTableClient3 rsSt;
- rsSt.m_pDatabase = m_pdbInstance;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- rsSt.m_strFilter = lpfilter;
- rsSt.Open();
- INT_PTR nIndex = 0;
- static CString strTemp;
- while (!rsSt.IsEOF())
- {
- strTemp.Format(_T("%ld"), rsSt.m_id);
- strListArray.ElementAt(nIndex).RemoveAll();
- if (CHILD_VERSION)
- {
- strListArray.ElementAt(nIndex).Add(strTemp);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_sex);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone);
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthday);
- strListArray.ElementAt(nIndex).Add(rsSt.m_dandate);
- strListArray.ElementAt(nIndex).Add(rsSt.m_date);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check1);
- }
- else
- {
- strListArray.ElementAt(nIndex).Add(strTemp);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthday);
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthday2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_time3);
- strListArray.ElementAt(nIndex).Add(rsSt.m_dandate);
- strListArray.ElementAt(nIndex).Add(rsSt.m_date);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check3);
- }
- nIndex++;
- rsSt.MoveNext();
- if (strListArray.GetSize() <= nIndex)break;
- }
- rsSt.Close();
- strListArray.SetSize(nIndex, 1);
- }
- catch (CDBException *e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE;
- }
- return TRUE;
- }
- BOOL CDBInterface::GetTableSendreg(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter /* = NULL */)
- {
- try
- {
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
- CRecordset myset(m_pdbInstance);
- static CString strSQL;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- strSQL.Format(_T("select count(*) as cot from sendreg where %s"), lpfilter);
- else
- strSQL = _T("select count(*) as cot from sendreg");
- //LOG4C_NO_FILENUM((LOG_NOTICE,"%s",CW2A(strSQL)));
- myset.Open(CRecordset::forwardOnly, strSQL);
- myset.GetFieldValue(_T("cot"), strSQL);
- myset.Close();
- if (_ttol(strSQL) == 0) return TRUE;
- strListArray.SetSize(_ttol(strSQL), 1);
- CTableSendreg rsSt;
- rsSt.m_pDatabase = m_pdbInstance;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- rsSt.m_strFilter = lpfilter;
- rsSt.m_strSort = "timestamp";
- rsSt.Open();
- INT_PTR nIndex = 0;
- static CString strTemp;
- while (!rsSt.IsEOF())
- {
- strTemp.Format(_T("%ld"), rsSt.m_autoid);
- strListArray.ElementAt(nIndex).RemoveAll();
- strListArray.ElementAt(nIndex).Add(rsSt.m_phones); // 电话;
- strListArray.ElementAt(nIndex).Add(rsSt.m_content); // 短信内容;
- strListArray.ElementAt(nIndex).Add(rsSt.m_timestamp); // 短信生成日期;
- strListArray.ElementAt(nIndex).Add(strTemp); // 自增id
- strListArray.ElementAt(nIndex).Add(rsSt.m_status); // 若查询则为sid;
- nIndex++;
- rsSt.MoveNext();
- if (strListArray.GetSize() <= nIndex)break;
- }
- rsSt.Close();
- strListArray.SetSize(nIndex, 1);
- }
- catch (CDBException* e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE;
- }
- return TRUE;
- }
- BOOL CDBInterface::GetTableSendregcard(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter /* = NULL */)
- {
- try{
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
- CRecordset myset(m_pdbInstance);
- static CString strSQL;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- strSQL.Format(_T("select count(*) as cot from sendregcard where %s"), lpfilter);
- else
- strSQL = _T("select count(*) as cot from sendregcard");
- myset.Open(CRecordset::forwardOnly, strSQL);
- myset.GetFieldValue(_T("cot"), strSQL);
- myset.Close();
- if (_ttol(strSQL) == 0) return TRUE;
- strListArray.SetSize(_ttol(strSQL), 1);
- CTableSendregcard rsSt;
- rsSt.m_pDatabase = m_pdbInstance;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- rsSt.m_strFilter = lpfilter;
- rsSt.Open();
- INT_PTR nIndex = 0;
- while (!rsSt.IsEOF())
- {
- strListArray.ElementAt(nIndex).RemoveAll();
- strListArray.ElementAt(nIndex).Add(rsSt.m_timestamp);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phones);
- nIndex++;
- rsSt.MoveNext();
- if (strListArray.GetSize() <= nIndex)break;
- }
- rsSt.Close();
- strListArray.SetSize(nIndex, 1);
- }
- catch (CDBException *e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE;
- }
- return TRUE;
- }
- BOOL CDBInterface::GetTableHospitalclient(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter /* = NULL */)
- {
- try
- {
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
- CRecordset myset(m_pdbInstance);
- static CString strSQL;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- strSQL.Format(_T("select count(*) as cot from hospitalclient where %s"), lpfilter);
- else
- strSQL = _T("select count(*) as cot from hospitalclient");
- #if _DEBUG
- LOG4C_NO_FILENUM((LOG_NOTICE,"儿童医院跟踪系统:%s",CW2A(lpfilter)));
- LOG4C_NO_FILENUM((LOG_NOTICE,"儿童医院跟踪系统:%s",CW2A(strSQL)));
- #endif
- myset.Open(CRecordset::forwardOnly, strSQL);
- myset.GetFieldValue(_T("cot"), strSQL);
- myset.Close();
- if (_ttol(strSQL) == 0) return TRUE;
- strListArray.SetSize(_ttol(strSQL), 1);
- CTableHospitalclient rsSt;
- rsSt.m_pDatabase = m_pdbInstance;
- if (lpfilter && _tcsicmp(lpfilter, _T("")) != 0)
- rsSt.m_strFilter = lpfilter;
- rsSt.Open();
- INT_PTR nIndex = 0;
- while (!rsSt.IsEOF())
- {
- strListArray.ElementAt(nIndex).RemoveAll();
- strListArray.ElementAt(nIndex).Add(rsSt.m_id);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_name2);
- strListArray.ElementAt(nIndex).Add(rsSt.m_sex);
- strListArray.ElementAt(nIndex).Add(rsSt.m_check1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthdaytype); // ==0 儿童生日; ==1孕妇怀满n天;
- strListArray.ElementAt(nIndex).Add(rsSt.m_birthday);
- strListArray.ElementAt(nIndex).Add(rsSt.m_pregnancydays);
- strListArray.ElementAt(nIndex).Add(rsSt.m_date1);
- strListArray.ElementAt(nIndex).Add(rsSt.m_type);
- strListArray.ElementAt(nIndex).Add(rsSt.m_phone1);
- nIndex++;
- rsSt.MoveNext();
- if (strListArray.GetSize() <= nIndex)break;
- }
- rsSt.Close();
- strListArray.SetSize(nIndex, 1);
- }
- catch (CDBException* e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE;
- }
- return TRUE;
- }
- BOOL CDBInterface::GetSMSInfo(SMSInfo &tSMSInfo)
- {
- try
- {
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
- CTableVersion rsSt;
- rsSt.m_pDatabase = m_pdbInstance;
- rsSt.Open();
- if (!rsSt.IsEOF())
- {
- tSMSInfo.msgaccount = rsSt.m_msgaccount;
- tSMSInfo.msgpassword = rsSt.m_msgpsw;
- tSMSInfo.msgused = rsSt.m_msgused;
- tSMSInfo.msgbalance = rsSt.m_msgbalance;
- tSMSInfo.msgCheck1 = rsSt.m_msgcheck1;
- tSMSInfo.msgCheck2 = rsSt.m_msgcheck2;
- tSMSInfo.msgCheck15 = rsSt.m_msgcheck15;
- tSMSInfo.hospitalmsgcheck1 = rsSt.m_hospitalmsgcheck1;
- tSMSInfo.hospitalmsgcheck2 = rsSt.m_hospitalmsgcheck2;
- tSMSInfo.msgDays1 = rsSt.m_msgdays1;
- tSMSInfo.msgDays2 = rsSt.m_msgdays2;
- tSMSInfo.msgContent1 = rsSt.m_msgcontent1;
- tSMSInfo.msgContent2 = rsSt.m_msgcontent2;
- tSMSInfo.msgContent15 = rsSt.m_msgcontent15;
- }
- rsSt.Close();
- }
- catch (CDBException *e)
- {
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE ;
- }
- return TRUE;
- }
- BOOL CDBInterface::GetSMSType(std::vector<SmsType> &vtSMSInfo,BOOL bhospitalcheck1,std::vector<SmsType> &vtSMSInfo2,BOOL bhospitalcheck2)
- {
- try
- {
- AutoThreadSection aSection(&s_critSection);
- if (!m_bOpen) return FALSE;
-
- //if ( g_bSoftWareReg == FALSE) return TRUE;
- vtSMSInfo.clear();
- vtSMSInfo2.clear();
-
- // childmsg表;
- CArray<CStringArray,CStringArray> strArray;
- GetTableChildmsg(strArray,_T("[check] = '1'"));
- int nSize = strArray.GetSize();
- for (int i = 0; i < nSize; i++)
- {
- CStringArray &saInfo = strArray.ElementAt(i);
- if ( saInfo.ElementAt(3) == _T("0")) // 0 和 1 表示儿童类的短信, 0时不与医院跟踪系统挂勾;
- {
- SmsType tSMSType;
- tSMSType.nChoose = 0;
- tSMSType.nDays = _ttoi(saInfo.ElementAt(1));
- tSMSType.nSMSType = 10000 + tSMSType.nDays;
- vtSMSInfo.push_back(tSMSType);
- }
- if ( bhospitalcheck1 && saInfo.ElementAt(3) == _T("1")) // 0 和 1 表示儿童类的短信;
- {
- SmsType tSMSType;
- tSMSType.nChoose = 1;
- tSMSType.nDays = _ttoi(saInfo.ElementAt(1));
- tSMSType.nSMSType = 10000 + tSMSType.nDays;
- vtSMSInfo.push_back(tSMSType);
- }
- if ( bhospitalcheck2 && saInfo.ElementAt(3) == _T("2") ) // ElementAt(3) == 2 孕妇短信;
- {
- SmsType tSMSType;
- tSMSType.nChoose = 2;
- tSMSType.nDays = _ttoi(saInfo.ElementAt(1));
- tSMSType.nSMSType = 20000 + tSMSType.nDays;
- vtSMSInfo2.push_back(tSMSType);
- }
- }
- }
- catch (CDBException *e)
- {
- vtSMSInfo.clear();
- SolveDBError(GetLastError(),e->m_strError);
- e->Delete();
- return FALSE ;
- }
- return TRUE;
- }
|