⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hopekingdatabase.h

📁 一个多线程
💻 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 + -