www.pudn.com > evil¡¯s illusion Server Codes.rar > database.h


 
 
/* 
	Date: 
		2002/03/06 
 
	Note: 
		Modified Version for Precompiler and Unicode 
*/ 
#ifndef __ORZ_DATABASE__ 
#define __ORZ_DATABASE__ 
 
 
#include  
#include  
#include  
 
 
#define DB_MAXBUF	256 
 
 
class CConnection; 
class CRecordset; 
 
 
/* 
	define CDatabase  
*/ 
class CDatabase 
{ 
protected: 
	SQLHENV		m_hEnv; 
 
public: 
	CDatabase(); 
	virtual ~CDatabase(); 
 
	bool Init(); 
	void Uninit(); 
 
	void EnumDSN( void (*pfnEnum)( char *pSrcName, char *pSrcDesc ) ); 
 
	CConnection * CreateConnection( char *pDSN, char *pID, char *pPassword ); 
	void DestroyConnection( CConnection *pConn ); 
 
public: 
	static void SetDiagRec( void (*pfnRecord)( char *pState, int nErrCode, char *pDesc ) ); 
	static void UnsetDiagRec(); 
	static void DiagRec( int nHandleType, SQLHANDLE hHandle ); 
}; 
 
 
/* 
	define CConnection  
*/ 
class CConnection 
{ 
protected: 
	SQLHDBC		m_hDBConn; 
 
private: 
	CConnection(); 
	virtual ~CConnection(); 
 
	bool Init( SQLHENV hEnv, char *pDSN, char *pID, char *pPassword ); 
	void Uninit(); 
 
public: 
	friend CDatabase; 
 
	CRecordset * CreateRecordset(); 
	void DestroyRecordset( CRecordset *pRec ); 
}; 
 
 
/* 
	define CRecordset  
*/ 
class CRecordset 
{ 
protected: 
	SQLHSTMT	m_hStmt; 
 
	int			m_nRowCount; 
	int			m_nCols; 
 
	class CColumnInfo 
	{ 
	public: 
		int  nColNameSize;			// Ä÷³ À̸§ Å©±â 
		char szColName[DB_MAXBUF];	// Ä÷³ À̸§ 
		int  nColType;				// Ä÷³ ŸÀÔ 
		int  nColSize;				// Ä÷³ Å©±â 
		int  nAllowDecimalDigit;	// 10Áø¼ö º¯°æ Çã¿ë ¿©ºÎ 
		int  nAllowNull;			// ³Î Çã¿ë ¿©ºÎ 
 
	public: 
		CColumnInfo(); 
		~CColumnInfo(); 
 
	} *m_pColInfo; 
 
	class CColumnData 
	{ 
	public: 
		char *pData;				// µ¥ÀÌÅÍ 
		int  nDataSize;				// ¼ø¼ö µ¥ÀÌÅÍ Å©±â (ÇÒ´çµÈ ¸Þ¸ð¸® Å©±â°¡ ¾Æ´Ô) 
 
	public: 
		CColumnData(); 
		~CColumnData(); 
 
		bool AllocMemory( int nSize ); 
 
	} *m_pColData; 
 
private: 
	CRecordset(); 
	virtual ~CRecordset(); 
 
	bool Init( SQLHDBC hDBConn ); 
	void Uninit(); 
 
public: 
	friend CConnection; 
	 
	bool Execute( char *pQuery ); 
	bool Fetch(); 
 
	int  GetRowCount(); 
	int  GetCols(); 
	char * Get( char *pColName ); 
	char * Get( int nCol ); 
	CColumnInfo * GetColInfo( char *pColName ); 
	CColumnInfo * GetColInfo( int nCol ); 
}; 
 
 
#endif