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

📄 bcp.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
                    == SUCCEED ? SUCCEED : FAIL;                pb = (void*) (v + 1);            }            break;            case eDB_Char: {                CDB_Char& val = dynamic_cast<CDB_Char&> (param);                r = bcp_colptr(m_Cmd, (BYTE*) val.Value(), i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd, val.IsNULL() ? 0 : -1, i + 1)                    == SUCCEED ? SUCCEED : FAIL;            }            break;            case eDB_VarChar: {                CDB_VarChar& val = dynamic_cast<CDB_VarChar&> (param);                r = bcp_colptr(m_Cmd, (BYTE*) val.Value(), i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd, val.IsNULL() ? 0 : -1, i + 1)                    == SUCCEED ? SUCCEED : FAIL;            }            break;            case eDB_LongChar: {                CDB_LongChar& val = dynamic_cast<CDB_LongChar&> (param);                r = bcp_colptr(m_Cmd, (BYTE*) val.Value(), i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd, val.IsNULL() ? 0 : -1, i + 1)                    == SUCCEED ? SUCCEED : FAIL;            }            break;            case eDB_Binary: {                CDB_Binary& val = dynamic_cast<CDB_Binary&> (param);                r = bcp_colptr(m_Cmd, (BYTE*) val.Value(), i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd, val.IsNULL() ? 0 : val.Size(), i + 1)                    == SUCCEED ? SUCCEED : FAIL;            }            break;            case eDB_VarBinary: {                CDB_VarBinary& val = dynamic_cast<CDB_VarBinary&> (param);                r = bcp_colptr(m_Cmd, (BYTE*) val.Value(), i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd, val.IsNULL() ? 0 : val.Size(), i + 1)                    == SUCCEED ? SUCCEED : FAIL;            }            break;            case eDB_LongBinary: {                CDB_LongBinary& val = dynamic_cast<CDB_LongBinary&> (param);                r = bcp_colptr(m_Cmd, (BYTE*) val.Value(), i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd, val.IsNULL() ? 0 : val.DataSize(), i + 1)                    == SUCCEED ? SUCCEED : FAIL;            }            break;            case eDB_Float: {                CDB_Float& val = dynamic_cast<CDB_Float&> (param);                //DBREAL v = (DBREAL) val.Value();                r = bcp_colptr(m_Cmd, (BYTE*) val.BindVal(), i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd,  val.IsNULL() ? 0 : -1, i + 1)                    == SUCCEED ? SUCCEED : FAIL;            }            break;            case eDB_Double: {                CDB_Double& val = dynamic_cast<CDB_Double&> (param);                //DBFLT8 v = (DBFLT8) val.Value();                r = bcp_bind(m_Cmd, (BYTE*) val.BindVal(), 0,                             val.IsNULL() ? 0 : -1, 0, 0, SYBFLT8, i + 1);            }            break;            case eDB_SmallDateTime: {                CDB_SmallDateTime& val =                    dynamic_cast<CDB_SmallDateTime&> (param);                DBDATETIME4* dt = (DBDATETIME4*) pb;                dt->days        = val.GetDays();                dt->minutes     = val.GetMinutes();                r = bcp_colptr(m_Cmd, (BYTE*) dt, i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd, val.IsNULL() ? 0 : -1, i + 1)                    == SUCCEED ? SUCCEED : FAIL;                pb = (void*) (dt + 1);            }            break;            case eDB_DateTime: {                CDB_DateTime& val = dynamic_cast<CDB_DateTime&> (param);                DBDATETIME* dt = (DBDATETIME*) pb;                dt->dtdays     = val.GetDays();                dt->dttime     = val.Get300Secs();                r = bcp_colptr(m_Cmd, (BYTE*) dt, i + 1)                    == SUCCEED &&                    bcp_collen(m_Cmd, val.IsNULL() ? 0 : -1, i + 1)                    == SUCCEED ? SUCCEED : FAIL;                pb = (void*) (dt + 1);            }            break;            case eDB_Text: {                CDB_Text& val = dynamic_cast<CDB_Text&> (param);                r = bcp_collen(m_Cmd, val.Size(), i + 1);            }            break;            case eDB_Image: {                CDB_Image& val = dynamic_cast<CDB_Image&> (param);                r = bcp_collen(m_Cmd, val.Size(), i + 1);            }            break;            default:                return false;            }            if (r != CS_SUCCEED)                return false;        }    }    return true;}bool CTDS_BCPInCmd::SendRow(){    char param_buff[2048]; // maximal row size, assured of buffer overruns    if (!x_AssignParams(param_buff)) {        m_HasFailed = true;        throw CDB_ClientEx(eDB_Error, 223004,                           "CTDS_BCPInCmd::SendRow", "cannot assign params");    }    if (bcp_sendrow(m_Cmd) != SUCCEED) {        m_HasFailed = true;        throw CDB_ClientEx(eDB_Error, 223005,                           "CTDS_BCPInCmd::SendRow", "bcp_sendrow failed");    }    m_WasSent = true;    if (m_HasTextImage) { // send text/image data        char buff[1800]; // text/image page size        for (unsigned int i = 0; i < m_Params.NofParams(); i++) {            if (m_Params.GetParamStatus(i) == 0)                continue;            CDB_Object& param = *m_Params.GetParam(i);            if (param.GetType() != eDB_Text &&                param.GetType() != eDB_Image)                continue;            CDB_Stream& val = dynamic_cast<CDB_Stream&> (param);            size_t s = val.Size();            do {                size_t l = val.Read(buff, sizeof(buff));                if (l > s)                    l = s;                if (bcp_moretext(m_Cmd, l, (BYTE*) buff) != SUCCEED) {                    m_HasFailed = true;                    throw CDB_ClientEx(eDB_Error, 223006,                                       "CTDS_BCPInCmd::SendRow",                                       param.GetType() == eDB_Text ?                                       "bcp_moretext for text failed" :                                       "bcp_moretext for image failed");                }                if (!l)                    break;                s -= l;            } while (s);        }    }    return true;}bool CTDS_BCPInCmd::Cancel(){    if(m_WasSent) {        DBINT outrow = bcp_done(m_Cmd);        m_WasSent= false;        return outrow == 0;    }    return false;}bool CTDS_BCPInCmd::CompleteBatch(){    if(m_WasSent) {        DBINT outrow = bcp_batch(m_Cmd);        if(outrow < 0) {            m_HasFailed= true;            throw CDB_ClientEx(eDB_Error, 223020,                               "CTDS_BCPInCmd::CompleteBatch",                                "bcp_batch failed");        }        return outrow > 0;    }    return false;}bool CTDS_BCPInCmd::CompleteBCP(){    if(m_WasSent) {        DBINT outrow = bcp_done(m_Cmd);        if(outrow < 0) {            m_HasFailed = true;            throw CDB_ClientEx(eDB_Error, 223020,                               "CTDS_BCPInCmd::CompleteBCP",                                "bcp_done failed");        }        m_WasSent= false;        return outrow > 0;    }    return false;}void CTDS_BCPInCmd::Release(){    m_BR = 0;    if (m_WasSent) {        Cancel();        m_WasSent = false;    }    m_Connect->DropCmd(*this);    delete this;}CTDS_BCPInCmd::~CTDS_BCPInCmd(){    if (m_BR)        *m_BR = 0;    if (m_WasSent)        Cancel();}END_NCBI_SCOPE/* * =========================================================================== * $Log: bcp.cpp,v $ * Revision 1000.1  2004/06/01 19:20:40  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6 * * Revision 1.6  2004/05/17 21:13:37  gorelenk * Added include of PCH ncbi_pch.hpp * * Revision 1.5  2003/04/29 21:15:03  soussov * new datatypes CDB_LongChar and CDB_LongBinary added * * Revision 1.4  2002/12/03 19:20:40  soussov * some minor fixes in bcp_batch, bcp_done * * Revision 1.3  2002/03/04 19:09:27  soussov * fixed bug in m_WasSent flag setting * * Revision 1.2  2001/11/06 18:00:02  lavr * Formatted uniformly as the rest of the library * * Revision 1.1  2001/10/25 00:39:22  vakatov * Initial revision * * =========================================================================== */

⌨️ 快捷键说明

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