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

📄 interfaces.hpp

📁 ncbi源码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
/* * =========================================================================== * PRODUCTION $Log: interfaces.hpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 19:17:57  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6 * PRODUCTION * =========================================================================== */#ifndef DBAPI_DRIVER_MSDBLIB___INTERFACES__HPP#define DBAPI_DRIVER_MSDBLIB___INTERFACES__HPP/* $Id: interfaces.hpp,v 1000.1 2004/06/01 19:17:57 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Author:  Vladimir Soussov * * File Description:  Driver for Microsoft DBLib server * */#include <dbapi/driver/public.hpp>#include <dbapi/driver/util/parameters.hpp>#include <dbapi/driver/util/handle_stack.hpp>#include <dbapi/driver/util/pointer_pot.hpp>#ifdef NCBI_OS_MSWIN#include <windows.h>#define DBNTWIN32                   /* must be defined before sqlfront.h */#include <sqlfront.h>               /* must be after windows.h */# if defined(_MSC_VER)  &&  (_MSC_VER > 1200)typedef const LPBYTE	LPCBYTE;    /* MSVC7 headers lucks typedef for LPCBYTE */# endif#include <sqldb.h>#define DBVERSION_UNKNOWN DBUNKNOWN#define DBVERSION_46 DBVER42#define DBVERSION_100 DBVER60#define DBCOLINFO    DBCOL// Other constants and types remapped in interfaces_p.hppBEGIN_NCBI_SCOPEclass CMSDBLibContext;class CMSDBL_Connection;class CMSDBL_LangCmd;class CMSDBL_RPCCmd;class CMSDBL_CursorCmd;class CMSDBL_BCPInCmd;class CMSDBL_SendDataCmd;class CMSDBL_RowResult;class CMSDBL_ParamResult;class CMSDBL_ComputeResult;class CMSDBL_StatusResult;class CMSDBL_CursorResult;class CMSDBL_BlobResult;const unsigned int kDBLibMaxNameLen = 128 + 4;/////////////////////////////////////////////////////////////////////////////////  CMSDBLibContext:://class NCBI_DBAPIDRIVER_MSDBLIB_EXPORT CMSDBLibContext : public I_DriverContext{    friend class CDB_Connection;public:    CMSDBLibContext(DBINT version = DBVERSION_46);    //    // GENERIC functionality (see in <dbapi/driver/interfaces.hpp>)    //    virtual bool SetLoginTimeout (unsigned int nof_secs = 0);    virtual bool SetTimeout      (unsigned int nof_secs = 0);    virtual bool SetMaxTextImageSize(size_t nof_bytes);    virtual CDB_Connection* Connect(const string&   srv_name,                                    const string&   user_name,                                    const string&   passwd,                                    TConnectionMode mode,                                    bool            reusable  = false,                                    const string&   pool_name = kEmptyStr);    virtual bool IsAbleTo(ECapability cpb) const;    virtual ~CMSDBLibContext();    //    // DBLIB specific functionality    //    // the following methods are optional (driver will use the default    // values if not called)    // the values will affect the new connections only    virtual void DBLIB_SetApplicationName(const string& a_name);    virtual void DBLIB_SetHostName(const string& host_name);    virtual void DBLIB_SetPacketSize(int p_size);    virtual bool DBLIB_SetMaxNofConns(int n);    static  int  DBLIB_dberr_handler(DBPROCESS*    dblink,   int     severity,                                     int           dberr,    int     oserr,                                     const string& dberrstr,                                     const string& oserrstr);    static  void DBLIB_dbmsg_handler(DBPROCESS*    dblink,   DBINT   msgno,                                     int           msgstate, int     severity,                                     const string& msgtxt,                                     const string& srvname,                                     const string& procname,                                     int           line);private:    static CMSDBLibContext* m_pDBLibContext;    string                m_AppName;    string                m_HostName;    short                 m_PacketSize;    LOGINREC*             m_Login;    DBPROCESS* x_ConnectToServer(const string&   srv_name,                                 const string&   user_name,                                 const string&   passwd,                                 TConnectionMode mode);};/////////////////////////////////////////////////////////////////////////////////  CTL_Connection:://class NCBI_DBAPIDRIVER_MSDBLIB_EXPORT CMSDBL_Connection : public I_Connection{    friend class CMSDBLibContext;    friend class CDB_Connection;    friend class CMSDBL_LangCmd;    friend class CMSDBL_RPCCmd;    friend class CMSDBL_CursorCmd;    friend class CMSDBL_BCPInCmd;    friend class CMSDBL_SendDataCmd;protected:    CMSDBL_Connection(CMSDBLibContext* cntx, DBPROCESS* con,                    bool reusable, const string& pool_name);    virtual bool IsAlive();    virtual CDB_LangCmd*     LangCmd(const string&       lang_query,                                     unsigned int        nof_params = 0);    virtual CDB_RPCCmd*      RPC(const string&           rpc_name,                                 unsigned int            nof_args);    virtual CDB_BCPInCmd*    BCPIn(const string&         table_name,                                   unsigned int          nof_columns);    virtual CDB_CursorCmd*   Cursor(const string&        cursor_name,                                    const string&        query,                                    unsigned int         nof_params,                                    unsigned int         batch_size = 1);    virtual CDB_SendDataCmd* SendDataCmd(I_ITDescriptor& desc,                                         size_t          data_size,                                         bool            log_it = true);    virtual bool SendData(I_ITDescriptor& desc, CDB_Image& img,                          bool log_it = true);    virtual bool SendData(I_ITDescriptor& desc, CDB_Text&  txt,                          bool log_it = true);    virtual bool Refresh();    virtual const string& ServerName() const;    virtual const string& UserName()   const;    virtual const string& Password()   const;    virtual I_DriverContext::TConnectionMode ConnectMode() const;    virtual bool IsReusable() const;    virtual const string& PoolName() const;    virtual I_DriverContext* Context() const;    virtual void PushMsgHandler(CDB_UserHandler* h);    virtual void PopMsgHandler (CDB_UserHandler* h);    virtual CDB_ResultProcessor* SetResultProcessor(CDB_ResultProcessor* rp);    virtual void Release();    virtual ~CMSDBL_Connection();    void DropCmd(CDB_BaseEnt& cmd);private:    bool x_SendData(I_ITDescriptor& desc, CDB_Stream& img, bool log_it = true);    I_ITDescriptor* x_GetNativeITDescriptor(const CDB_ITDescriptor& descr_in);    RETCODE x_Results(DBPROCESS* pLink);    DBPROCESS*      m_Link;    CMSDBLibContext*  m_Context;    CPointerPot     m_CMDs;    CDBHandlerStack m_MsgHandlers;    string          m_Server;    string          m_User;    string          m_Passwd;    string          m_Pool;    bool            m_Reusable;    bool            m_BCPAble;    bool            m_SecureLogin;    CDB_ResultProcessor* m_ResProc;};/////////////////////////////////////////////////////////////////////////////////  CMSDBL_LangCmd:://class NCBI_DBAPIDRIVER_MSDBLIB_EXPORT CMSDBL_LangCmd : public I_LangCmd{    friend class CMSDBL_Connection;protected:    CMSDBL_LangCmd(CMSDBL_Connection* conn, DBPROCESS* cmd,                 const string& lang_query, unsigned int nof_params);    virtual bool More(const string& query_text);    virtual bool BindParam(const string& param_name, CDB_Object* param_ptr);    virtual bool SetParam(const string& param_name, CDB_Object* param_ptr);    virtual bool Send();    virtual bool WasSent() const;    virtual bool Cancel();    virtual bool WasCanceled() const;    virtual CDB_Result* Result();    virtual bool HasMoreResults() const;    virtual bool HasFailed() const;    virtual int  RowCount() const;    virtual void DumpResults();    virtual void Release();    virtual ~CMSDBL_LangCmd();private:    bool x_AssignParams();    CMSDBL_Connection* m_Connect;    DBPROCESS*       m_Cmd;    string           m_Query;    CDB_Params       m_Params;    bool             m_WasSent;    bool             m_HasFailed;    I_Result*        m_Res;    int              m_RowCount;    unsigned int     m_Status;};/////////////////////////////////////////////////////////////////////////////////  CTL_RPCCmd:://class NCBI_DBAPIDRIVER_MSDBLIB_EXPORT CMSDBL_RPCCmd : public I_RPCCmd{    friend class CMSDBL_Connection;protected:    CMSDBL_RPCCmd(CMSDBL_Connection* con, DBPROCESS* cmd,                const string& proc_name, unsigned int nof_params);    virtual bool BindParam(const string& param_name, CDB_Object* param_ptr,                           bool out_param = false);    virtual bool SetParam(const string& param_name, CDB_Object* param_ptr,                          bool out_param = false);    virtual bool Send();    virtual bool WasSent() const;    virtual bool Cancel();    virtual bool WasCanceled() const;    virtual CDB_Result* Result();    virtual bool HasMoreResults() const;    virtual bool HasFailed() const ;    virtual int  RowCount() const;    virtual void DumpResults();    virtual void SetRecompile(bool recompile = true);    virtual void Release();    ~CMSDBL_RPCCmd();private:    bool x_AssignParams(char* param_buff);    CMSDBL_Connection* m_Connect;    DBPROCESS*       m_Cmd;    string           m_Query;    CDB_Params       m_Params;    bool             m_WasSent;    bool             m_HasFailed;    bool             m_Recompile;    I_Result*        m_Res;    int              m_RowCount;    unsigned int     m_Status;};/////////////////////////////////////////////////////////////////////////////////  CMSDBL_CursorCmd:://class NCBI_DBAPIDRIVER_MSDBLIB_EXPORT CMSDBL_CursorCmd : public I_CursorCmd{    friend class CMSDBL_Connection;protected:    CMSDBL_CursorCmd(CMSDBL_Connection* con, DBPROCESS* cmd,                   const string& cursor_name, const string& query,                   unsigned int nof_params);    virtual bool BindParam(const string& param_name, CDB_Object* pVal);    virtual CDB_Result* Open();    virtual bool Update(const string& table_name, const string& upd_query);    virtual bool UpdateTextImage(unsigned int item_num, CDB_Stream& data, 				 bool log_it = true);    virtual CDB_SendDataCmd* SendDataCmd(unsigned int item_num, size_t size, 					 bool log_it = true);    virtual bool Delete(const string& table_name);    virtual int  RowCount() const;    virtual bool Close();    virtual void Release();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -