📄 hopekingdatabase.h
字号:
// HopeKingDatabase.h: interface for the CHopeKingDatabase class.//http://www.bulldoglist.com/ http://www.penisdance.com/join4free3.html http://www.animalfetish.com/afsearch/index.html
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_HOPEKINGDATABASE_H__50DE2A25_404F_4B62_A006_9BB20112A93F__INCLUDED_)
#define AFX_HOPEKINGDATABASE_H__50DE2A25_404F_4B62_A006_9BB20112A93F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "afxtempl.h"
#include "HopeKingRecordset.h"
class CHopeKingDatabase : public CDatabase ,public CAsynWorker
{
public:
CString m_csAlis,m_csDsn,m_csProcInfo,m_csTableInfo;
CHopeKingDatabase(CDataBus *);
virtual ~CHopeKingDatabase();
CHopeKingRecordset m_defaultSql,m_ParamSql;
CArray< CHopeKingRecordset *,CHopeKingRecordset * > m_ListSql;
void CloseData();
int ExcuteOdbc(LPCTSTR szExcuteSql,int iflag,UniVar & uvSpyy,int iParNum,UniVar * pParam);
virtual void OnMsgReceive(CUniMsg * pMsg);
virtual void QueueMenuberTimeOut(CUniMsg *pMsg);
virtual void OnSynMsg(CUniMsg * pCmdSend,CUniMsg * pCmdReceive);
CHopeKingRecordset * OpenTable(LPCTSTR szTableName,CUniMsg * LineVar);
BOOL CloseTable(CHopeKingRecordset * );
BOOL MoveFirst(CHopeKingRecordset * ,CUniMsg * LineVar);
BOOL MoveLast(CHopeKingRecordset * ,CUniMsg * LineVar);
BOOL MoveNext(CHopeKingRecordset * ,CUniMsg * LineVar);
BOOL MovePrev(CHopeKingRecordset * ,CUniMsg * LineVar);
BOOL AddNewLine(CHopeKingRecordset * ,CUniMsg * LineVar);
BOOL UpdateLine(CHopeKingRecordset * ,CUniMsg * LineVar);
enum ExcData{
nWantResult=0x10000,
nNoResult=0x00000,
nPamTypePointed=0x20000,
nPamTypeNopointed=0x00000,
nPmPointedSet=0x40000,//define flow the parameter
nPmDefaultSet=0x00000,//default: int,dword-->nsqllong,flag->nsqldouble,string->slqvarchar,datablock->sqlbinary
nNoReturn=0x80000,
nNeedReturn=0x00000,
nProcedureName=0x0000,
nTableName=0x1000,
nSqlClause=0x2000,
nMoveFirst=0,
nMoveLast=1,
nMoveNext=2,
nMovePrev=3,
nSqlChar=0,
nSqlDecimal=0,
nSqlMoney=0,
nSqlNChar=0,
nSqlNText=0,
nSqlNumeric=0,
nSqlNVarChar=0,
nSqlText=0,
nSqlUniqueIdentifier=0,
nSqlVarChar=0,
nSqlTinyInt=1,
nSqlSmallInt=2,
nSqlReal=3,
nSqlFloat=4,
nSqlDateTime=5,
nSqlSmallDateTime=5,
nSqlBinary=6,
nSqlTimeStamp=6,
nSqlVarBinary=6,
nSqlImage=7,
nSqlBit=8,
nSqlInt=9,
nSqlInputParam=0x000,
nSqlParam=0x000,
nSqlOutputParam=0x100,
nSqlInoutParam=0x200,
nSqlInputColumn=0x400
};
};
class COdbcMg:public CAsynWorker{
public:
CMapStringToPtr m_OdbcDataMap;
CArray<CHopeKingDatabase * ,CHopeKingDatabase * >m_ListOdbcData;
CRITICAL_SECTION statArea;
CString m_csDefaultAlis,m_csDefaultDsn;
void OpenDefaultOdbc(
LPCTSTR procinfo="select isoutparam,type,length from syscolumns where id in (select id from sysobjects where name=?)",
LPCTSTR tableinfo="select name,type,length from syscolumns where id in (select id from sysobjects where name=?)");
COdbcMg(CDataBus *);
~COdbcMg();
CHopeKingDatabase * m_pDefaultOdbc;
inline CHopeKingDatabase * GetOdbc(LPCTSTR szAlis){
CHopeKingDatabase * pDbs=NULL;
m_OdbcDataMap.Lookup(szAlis,(void * &)pDbs);
return pDbs;
};
inline CHopeKingDatabase * GetDefault(){return m_pDefaultOdbc;};
CHopeKingDatabase * OpenOdbc(LPCTSTR szAlis,LPCTSTR lpszConnect,
LPCTSTR procinfo="select isoutparam,type,length from syscolumns where id in (select id from sysobjects where name=?)",
LPCTSTR tableinfo="select name,type,length from syscolumns where id in (select id from sysobjects where name=?)");
void CloseOdbc(CHopeKingDatabase *);
};
#define MAX_GROUP_NUM 100
#define MAX_FEATURE_NUM 32
#define CMD_LOCK_RES 0x40005000
#define CMD_FREE_RES 0x40005001
#define CMD_APPLY_RES 0x40005002
struct RESOBJ{
DWORD dwGroupId;
DWORD dwFeaturesId;
DWORD dwResKey;
DWORD dwCatchObj;
DWORD dwCatchMod;
DWORD dwGroupPos;
DWORD dwTmCount;
BYTE * pbtSkillLevel;
time_t tm;
};
struct NEEDER{
DWORD dwObj;
DWORD dwMod;
DWORD dwNeedKey1;
DWORD dwNeedKey2;
DWORD dwType;
BOOL bAsyn;
DWORD dwId;
DWORD dwRight;
DWORD dwIdent;
time_t tm;
};
class CResDistrabutor : public CAsynWorker{
public:
CResDistrabutor(CDataBus *);
~CResDistrabutor();
CString m_csName;
CArray<RESOBJ,RESOBJ&>m_ResList;
CList<int,int&>m_FreeResList;
CArray<NEEDER,NEEDER&>m_NeederListG;
CArray<NEEDER,NEEDER&>m_NeederListS;
DWORD *pdwGroupCountF,*pdwGroupCountN,*pdwGroup;
DWORD *pdwFeatureCountF,*pdwFeatureCountN;
DWORD dwSkillStatusF,dwSkillStatusN;
CMapStringToPtr m_StringFeatureList;
CMapPtrToPtr m_ResKeyList,m_ResKeyPos;
long m_iTimeout;
long m_iMaxLength;
long m_iMaxGroupNum;
long m_iMaxFeatureNum;
void AddRes(DWORD dwGroupId,LPCTSTR szFeature,DWORD dwResKey,DWORD dwCatchObj,DWORD dwCatchMod);
int AddFeatureName(LPCTSTR szFeature);
DWORD GetSkillLevel(BYTE * pLevel,LPCTSTR szFeature);
int GetSkillLevel(int ip);
DWORD GetGroupPos(DWORD dwGroupId);
void CheckFCount(int step,DWORD dwFeaturesId,DWORD * pdwFeature,DWORD & dwSki);
BOOL AddNeeder(BOOL bAsyn,DWORD dwIdent,DWORD dwObj,DWORD dwMod,DWORD dwNeedKey1,DWORD dwNeedKey2,DWORD dwType,DWORD dwId,DWORD dwRight);
BOOL AddNeeder(BOOL bAsyn,DWORD dwIdent,DWORD dwObj,DWORD dwMod,DWORD dwNeedKey1,DWORD dwNeedKey2,DWORD dwType,LPCTSTR szFeature,DWORD dwRight);
BOOL LockRes(DWORD dwResKey);
BOOL FreeRes(DWORD dwResKey);
BOOL CheckNeeder(int ipos);
virtual void OnMsgReceive(CUniMsg * pMsg);
virtual void OnTimer(int iNumTimeflake,DWORD dwIdent);
virtual SYNMSGRESULT OnAsynMsg(CUniMsg * pCmdSend,CUniMsg * pCmdReceive);//{return synnowdo;};
};
class CDistrabutorMg : public CAsynWorker{
public:
CDistrabutorMg(CDataBus *);
~CDistrabutorMg();
CMapStringToPtr m_DistrMap;
CArray<CResDistrabutor * ,CResDistrabutor * >m_ListDistrData;
CRITICAL_SECTION statArea;
CResDistrabutor * OpenDistrabutor(LPCTSTR szName,int GroupNum,LPCTSTR szFeatureList,int timeout,int length);
inline CResDistrabutor * GetDistrabutor(LPCTSTR szAlis){
CResDistrabutor * pDbs=NULL;
m_DistrMap.Lookup(szAlis,(void * &)pDbs);
return pDbs;
};
void CloseDistrabutor(CResDistrabutor * );
};
/*CComptr
class CHopKingComSta: public CAsynWorker{
public:
CHopKingComSta(CDataBus *);
~CHopKingComSta();
CArray<>
};
class CHopKingStaMg : public CAsynWorker{
public:
CHopKingStaMg(CDataBus *);
~CHopKingStaMg();
};
*/
#endif // !defined(AFX_HOPEKINGDATABASE_H__50DE2A25_404F_4B62_A006_9BB20112A93F__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -