HandleEnv.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef ODBC_HANDLES_HandleEnv_hpp
  14. #define ODBC_HANDLES_HandleEnv_hpp
  15. #include <list>
  16. #include <common/common.hpp>
  17. #include "HandleBase.hpp"
  18. class HandleRoot;
  19. class HandleDbc;
  20. /**
  21.  * @class HandleEnv
  22.  * @brief Environment handle (SQLHENV).
  23.  */
  24. class HandleEnv : public HandleBase {
  25. public:
  26.     HandleEnv(HandleRoot* pRoot);
  27.     ~HandleEnv();
  28.     void ctor(Ctx& ctx);
  29.     void dtor(Ctx& ctx);
  30.     HandleRoot* getRoot();
  31.     HandleBase* getParent();
  32.     OdbcHandle odbcHandle();
  33.     // allocate and free handles
  34.     void sqlAllocConnect(Ctx& ctx, HandleDbc** ppDbc);
  35.     void sqlAllocHandle(Ctx& ctx, SQLSMALLINT childType, HandleBase** ppChild);
  36.     void sqlFreeConnect(Ctx& ctx, HandleDbc* pDbc);
  37.     void sqlFreeHandle(Ctx& ctx, SQLSMALLINT childType, HandleBase* pChild);
  38.     // attributes
  39.     void sqlSetEnvAttr(Ctx& ctx, SQLINTEGER attribute, SQLPOINTER value, SQLINTEGER stringLength);
  40.     void sqlGetEnvAttr(Ctx& ctx, SQLINTEGER attribute, SQLPOINTER value, SQLINTEGER bufferLength, SQLINTEGER* stringLength);
  41.     int getOdbcVersion(Ctx& ctx); // returns -1 if not set
  42.     // transactions
  43.     void sqlEndTran(Ctx& ctx, SQLSMALLINT completionType);
  44.     void sqlTransact(Ctx& ctx, SQLUSMALLINT completionType); // odbc2.0
  45. private:
  46.     HandleRoot* const m_root;
  47.     std::list<HandleDbc*> m_listDbc;
  48.     static AttrSpec m_attrSpec[];
  49.     AttrArea m_attrArea;
  50. };
  51. inline HandleRoot*
  52. HandleEnv::getRoot()
  53. {
  54.     return m_root;
  55. }
  56. inline HandleBase*
  57. HandleEnv::getParent()
  58. {
  59.     return (HandleBase*)getRoot();
  60. }
  61. inline OdbcHandle
  62. HandleEnv::odbcHandle()
  63. {
  64.     return Odbc_handle_env;
  65. }
  66. #endif