#ifndef _JEFF_DBINTERFACE_HEAD_ #define _JEFF_DBINTERFACE_HEAD_ // // Jeff.Create at 2014.07.14 // 数据库处理; // #include #include // CDatabase类头文件; #include "TableChildmsg.h" #include "TableClient2.h" #include "TableClient3.h" #include "TableHospitalclient.h" #include "TableSendreg.h" #include "TableSendregcard.h" #include "TableVersion.h" #include "DBViewDindanclient.h" #include "CritSection.h" #pragma once // Jeff.--已实现; // 当SQL执行错误为网络连接错误或数据库服务不存在,抛出函数,启动重连数据库线程. // 重连线程在成功连接数据库后,自动结束,不做循环; typedef struct _ST_SMSTYPE_{ int nDays; int nSMSType; int nChoose; }SmsType,*pSmsType; class CDBInterface { CDBInterface(void); public: ~CDBInterface(void); static CDBInterface *GetInstance() { static CDBInterface Instance; return &Instance; } const BOOL IsOpen(){ return m_bOpen; } const CString& GetConnectErrorDescriptor() const{ return m_strConnectErrorDescriptor; } // 打开数据库连接. BOOL OpenDatabase(LPCTSTR lpSQLConnectString = NULL); void CloseDatabase(); const CDatabase *GetDatabaseInstance(){ return m_pdbInstance; } // 执行SQL语句,不返回记录集 BOOL Execute(LPCTSTR lpSQL); int GetSelectCount(LPCTSTR lpTableName, LPCTSTR lpFilter); // 获取查询记录数; private: BOOL m_bOpen; TCHAR m_szConnectString[MAX_PATH]; CDatabase *m_pdbInstance; ThreadSection s_critSection; ThreadSection *ReturnSection() { return &s_critSection; } CString m_strConnectErrorDescriptor; public: BOOL GetSMSType(std::vector &vtSMSInfo,BOOL bhospitalcheck1,std::vector &vtSMSInfo2,BOOL bhospitalcheck2); BOOL GetTableChildmsg(CArray &strListArray, LPCTSTR lpfilter = NULL); BOOL GetTableClient2(CArray &strListArray, LPCTSTR lpfilter = NULL); BOOL GetTableClient3(CArray &strListArray, LPCTSTR lpfilter = NULL); #if JEFF_DELETE_ON void GetTableVersion(CStringArray &strListArray, LPCTSTR lpfilter = NULL); #endif BOOL GetTableSendreg(CArray &strListArray, LPCTSTR lpfilter = NULL); BOOL GetTableSendregcard(CArray &strListArray, LPCTSTR lpfilter = NULL); BOOL GetTableHospitalclient(CArray &strListArray, LPCTSTR lpfilter = NULL); BOOL GetDBViewDindanclientRecord(CArray &strListArray, LPCTSTR lpfilter = NULL); BOOL GetSMSInfo(SMSInfo &tSMSInfo); static BOOL m_bEndofThread; HANDLE m_hWaitableTimer; HANDLE m_hReConnectEvent; HANDLE m_hReConnectThread; int StartThread(); int EndofThread(); static DWORD WINAPI ReConnectDatabaseThread(LPVOID lpPara); BOOL m_bSolve; BOOL SolveDBError(CONST DWORD &dwError,LPCTSTR lpErrorString = NULL); }; #endif