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

📄 public.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* * =========================================================================== * PRODUCTION $Log: public.cpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 19:19:25  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8 * PRODUCTION * =========================================================================== *//* $Id: public.cpp,v 1000.1 2004/06/01 19:19:25 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:  Data Server public interfaces * */#include <ncbi_pch.hpp>#include <dbapi/driver/public.hpp>BEGIN_NCBI_SCOPE//////////////////////////////////////////////////////////////////////////////  CCDB_Connection:://CDB_Connection::CDB_Connection(I_Connection* c){    if ( !c ) {        throw CDB_ClientEx(eDB_Error, 200001, "CDB_Connection::CDB_Connection",                           "No valid connection provided");    }    m_Connect = c;    m_Connect->Acquire((CDB_BaseEnt**) &m_Connect);}bool CDB_Connection::IsAlive(){    return (m_Connect == 0) ? false : m_Connect->IsAlive();}inline void s_CheckConnection(I_Connection* conn, const char* method_name){    if ( !conn ) {        throw CDB_ClientEx(eDB_Warning, 200002,                           "CDB_Connection::" + string(method_name),                           "Connection has been closed");    }}CDB_LangCmd* CDB_Connection::LangCmd(const string& lang_query,                                     unsigned int  nof_params){      s_CheckConnection(m_Connect, "LangCmd");    return m_Connect->LangCmd(lang_query, nof_params);}CDB_RPCCmd* CDB_Connection::RPC(const string& rpc_name,                                unsigned int  nof_args){    s_CheckConnection(m_Connect, "RPC");    return m_Connect->RPC(rpc_name, nof_args);}CDB_BCPInCmd* CDB_Connection::BCPIn(const string& table_name,                                    unsigned int  nof_columns){    s_CheckConnection(m_Connect, "BCPIn");    return m_Connect->BCPIn(table_name, nof_columns);}CDB_CursorCmd* CDB_Connection::Cursor(const string& cursor_name,                                      const string& query,                                      unsigned int  nof_params,                                      unsigned int  batch_size){    s_CheckConnection(m_Connect, "Cursor");    return m_Connect->Cursor(cursor_name, query, nof_params, batch_size);}CDB_SendDataCmd* CDB_Connection::SendDataCmd(I_ITDescriptor& desc,                                             size_t data_size, bool log_it){    s_CheckConnection(m_Connect, "SendDataCmd");    return m_Connect->SendDataCmd(desc, data_size, log_it);}bool CDB_Connection::SendData(I_ITDescriptor& desc, CDB_Text& txt, bool log_it){    s_CheckConnection(m_Connect, "SendData(txt)");    return m_Connect->SendData(desc, txt, log_it);}bool CDB_Connection::SendData(I_ITDescriptor& desc, CDB_Image& img, bool log_it){    s_CheckConnection(m_Connect, "SendData(image)");    return m_Connect->SendData(desc, img, log_it);}bool CDB_Connection::Refresh(){    s_CheckConnection(m_Connect, "Refresh");    return m_Connect->Refresh();}const string& CDB_Connection::ServerName() const{    s_CheckConnection(m_Connect, "ServerName");    return m_Connect->ServerName();}const string& CDB_Connection::UserName() const{    s_CheckConnection(m_Connect, "UserName");    return m_Connect->UserName();}const string& CDB_Connection::Password() const{    s_CheckConnection(m_Connect, "Password");    return m_Connect->Password();}I_DriverContext::TConnectionMode  CDB_Connection::ConnectMode() const{    s_CheckConnection(m_Connect, "ConnectMode");    return m_Connect->ConnectMode();}bool CDB_Connection::IsReusable() const{    s_CheckConnection(m_Connect, "IsReusable");    return m_Connect->IsReusable();}const string& CDB_Connection::PoolName() const{    s_CheckConnection(m_Connect, "PoolName");    return m_Connect->PoolName();}I_DriverContext* CDB_Connection::Context() const{    s_CheckConnection(m_Connect, "Context");    return m_Connect->Context();}void CDB_Connection::PushMsgHandler(CDB_UserHandler* h){    s_CheckConnection(m_Connect, "PushMsgHandler");    m_Connect->PushMsgHandler(h);}void CDB_Connection::PopMsgHandler(CDB_UserHandler* h){    s_CheckConnection(m_Connect, "PopMsgHandler");    m_Connect->PopMsgHandler(h);}CDB_ResultProcessor*CDB_Connection::SetResultProcessor(CDB_ResultProcessor* rp){    return m_Connect? m_Connect->SetResultProcessor(rp) : 0;}CDB_Connection::~CDB_Connection(){    if ( m_Connect ) {        m_Connect->Release();        Context()->x_Recycle(m_Connect, m_Connect->IsReusable());    }}//////////////////////////////////////////////////////////////////////////////  CDB_Result:://CDB_Result::CDB_Result(I_Result* r){    if ( !r ) {        throw CDB_ClientEx(eDB_Error, 200004, "CDB_Result::CDB_Result",                           "No valid result provided");    }    m_Res = r;    m_Res->Acquire((CDB_BaseEnt**) &m_Res);}inline void s_CheckResult(I_Result* res, const char* method_name){    if ( !res ) {        throw CDB_ClientEx(eDB_Warning, 200003,                           "CDB_Result::" + string(method_name),                           "This result is not available anymore");    }}EDB_ResType CDB_Result::ResultType() const{    s_CheckResult(m_Res, "ResultType");    return m_Res->ResultType();}unsigned int CDB_Result::NofItems() const{    s_CheckResult(m_Res, "NofItems");    return m_Res->NofItems();}const char* CDB_Result::ItemName(unsigned int item_num) const{    s_CheckResult(m_Res, "ItemName");    return m_Res->ItemName(item_num);}size_t CDB_Result::ItemMaxSize(unsigned int item_num) const{    s_CheckResult(m_Res, "ItemMaxSize");    return m_Res->ItemMaxSize(item_num);}EDB_Type CDB_Result::ItemDataType(unsigned int item_num) const{    s_CheckResult(m_Res, "ItemDataType");    return m_Res->ItemDataType(item_num);}bool CDB_Result::Fetch(){    s_CheckResult(m_Res, "Fetch");    return m_Res->Fetch();}int CDB_Result::CurrentItemNo() const{    s_CheckResult(m_Res, "CurrentItemNo");    return m_Res->CurrentItemNo();}CDB_Object* CDB_Result::GetItem(CDB_Object* item_buf){    s_CheckResult(m_Res, "GetItem");    return m_Res->GetItem(item_buf);}size_t CDB_Result::ReadItem(void* buffer, size_t buffer_size, bool* is_null){    s_CheckResult(m_Res, "ReadItem");    return m_Res->ReadItem(buffer, buffer_size, is_null);}I_ITDescriptor* CDB_Result::GetImageOrTextDescriptor(){    s_CheckResult(m_Res, "GetImageOrTextDescriptor");    return m_Res->GetImageOrTextDescriptor();}bool CDB_Result::SkipItem(){    s_CheckResult(m_Res, "SkipItem");    return m_Res->SkipItem();}CDB_Result::~CDB_Result(){    if ( m_Res ) {        m_Res->Release();    }}//////////////////////////////////////////////////////////////////////////////  CDB_LangCmd:://CDB_LangCmd::CDB_LangCmd(I_LangCmd* c){    if ( !c ) {        throw CDB_ClientEx(eDB_Error, 200004, "CDB_LangCmd::CDB_LangCmd",                           "No valid command provided");    }    m_Cmd = c;    m_Cmd->Acquire((CDB_BaseEnt**) &m_Cmd);}inline void s_CheckLangCmd(I_LangCmd* cmd, const char* method_name){    if ( !cmd ) {        throw CDB_ClientEx(eDB_Warning, 200005,                           "CDB_LangCmd::" + string(method_name),                           "This command can not be used anymore");    }}bool CDB_LangCmd::More(const string& query_text){    s_CheckLangCmd(m_Cmd, "More");    return m_Cmd->More(query_text);}bool CDB_LangCmd::BindParam(const string& param_name, CDB_Object* pVal){    s_CheckLangCmd(m_Cmd, "BindParam");    return m_Cmd->BindParam(param_name, pVal);}bool CDB_LangCmd::SetParam(const string& param_name, CDB_Object* pVal){    s_CheckLangCmd(m_Cmd, "SetParam");    return m_Cmd->SetParam(param_name, pVal);}bool CDB_LangCmd::Send(){    s_CheckLangCmd(m_Cmd, "Send");    return m_Cmd->Send();}bool CDB_LangCmd::WasSent() const{    s_CheckLangCmd(m_Cmd, "WasSent");    return m_Cmd->WasSent();}bool CDB_LangCmd::Cancel(){    s_CheckLangCmd(m_Cmd, "Cancel");    return m_Cmd->Cancel();}bool CDB_LangCmd::WasCanceled() const{    s_CheckLangCmd(m_Cmd, "WasCanceled");    return m_Cmd->WasCanceled();}CDB_Result* CDB_LangCmd::Result(){    s_CheckLangCmd(m_Cmd, "Result");    return m_Cmd->Result();}bool CDB_LangCmd::HasMoreResults() const{    s_CheckLangCmd(m_Cmd, "HasMoreResults");    return m_Cmd->HasMoreResults();}bool CDB_LangCmd::HasFailed() const{    s_CheckLangCmd(m_Cmd, "HasFailed");    return m_Cmd->HasFailed();}int CDB_LangCmd::RowCount() const{    s_CheckLangCmd(m_Cmd, "RowCount");    return m_Cmd->RowCount();}

⌨️ 快捷键说明

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