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