database.h
上传用户:tt_chan
上传日期:2009-12-03
资源大小:4523k
文件大小:2k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. /*
  2. Date:
  3. 2002/03/06
  4. Note:
  5. Modified Version for Precompiler and Unicode
  6. */
  7. #ifndef __ORZ_DATABASE__
  8. #define __ORZ_DATABASE__
  9. #include <windows.h>
  10. #include <sql.h>
  11. #include <sqlext.h>
  12. #define DB_MAXBUF 256
  13. class CConnection;
  14. class CRecordset;
  15. /*
  16. define CDatabase 
  17. */
  18. class CDatabase
  19. {
  20. protected:
  21. SQLHENV m_hEnv;
  22. public:
  23. CDatabase();
  24. virtual ~CDatabase();
  25. bool Init();
  26. void Uninit();
  27. void EnumDSN( void (*pfnEnum)( char *pSrcName, char *pSrcDesc ) );
  28. CConnection * CreateConnection( char *pDSN, char *pID, char *pPassword );
  29. void DestroyConnection( CConnection *pConn );
  30. public:
  31. static void SetDiagRec( void (*pfnRecord)( char *pState, int nErrCode, char *pDesc ) );
  32. static void UnsetDiagRec();
  33. static void DiagRec( int nHandleType, SQLHANDLE hHandle );
  34. };
  35. /*
  36. define CConnection 
  37. */
  38. class CConnection
  39. {
  40. protected:
  41. SQLHDBC m_hDBConn;
  42. private:
  43. CConnection();
  44. virtual ~CConnection();
  45. bool Init( SQLHENV hEnv, char *pDSN, char *pID, char *pPassword );
  46. void Uninit();
  47. public:
  48. friend CDatabase;
  49. CRecordset * CreateRecordset();
  50. void DestroyRecordset( CRecordset *pRec );
  51. };
  52. /*
  53. define CRecordset 
  54. */
  55. class CRecordset
  56. {
  57. protected:
  58. SQLHSTMT m_hStmt;
  59. int m_nRowCount;
  60. int m_nCols;
  61. class CColumnInfo
  62. {
  63. public:
  64. int  nColNameSize; // 拿烦 捞抚 农扁
  65. char szColName[DB_MAXBUF]; // 拿烦 捞抚
  66. int  nColType; // 拿烦 鸥涝
  67. int  nColSize; // 拿烦 农扁
  68. int  nAllowDecimalDigit; // 10柳荐 函版 倾侩 咯何
  69. int  nAllowNull; // 澄 倾侩 咯何
  70. public:
  71. CColumnInfo();
  72. ~CColumnInfo();
  73. } *m_pColInfo;
  74. class CColumnData
  75. {
  76. public:
  77. char *pData; // 单捞磐
  78. int  nDataSize; // 鉴荐 单捞磐 农扁 (且寸等 皋葛府 农扁啊 酒丛)
  79. public:
  80. CColumnData();
  81. ~CColumnData();
  82. bool AllocMemory( int nSize );
  83. } *m_pColData;
  84. private:
  85. CRecordset();
  86. virtual ~CRecordset();
  87. bool Init( SQLHDBC hDBConn );
  88. void Uninit();
  89. public:
  90. friend CConnection;
  91. bool Execute( char *pQuery );
  92. bool Fetch();
  93. int  GetRowCount();
  94. int  GetCols();
  95. char * Get( char *pColName );
  96. char * Get( int nCol );
  97. CColumnInfo * GetColInfo( char *pColName );
  98. CColumnInfo * GetColInfo( int nCol );
  99. };
  100. #endif