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

📄 bcp.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        break;        case eDB_Binary: {            CDB_Binary& val = dynamic_cast<CDB_Binary&> (param);            r = bcp_colptr(m_Cmd, (!val.IsNULL())? ((BYTE*) val.Value()) : (BYTE*)pb, i + 1)                == SUCCEED &&                bcp_collen(m_Cmd,                           val.IsNULL() ? SQL_NULL_DATA : (Int4) val.Size(), i + 1)                == SUCCEED ? SUCCEED : FAIL;        }        break;        case eDB_VarBinary: {            CDB_VarBinary& val = dynamic_cast<CDB_VarBinary&> (param);            r = bcp_colptr(m_Cmd, (!val.IsNULL())? ((BYTE*) val.Value()) : (BYTE*)pb, i + 1)                == SUCCEED &&                bcp_collen(m_Cmd,                           val.IsNULL() ? SQL_NULL_DATA : (Int4) val.Size(), i + 1)                == SUCCEED ? SUCCEED : FAIL;        }        break;        case eDB_LongBinary: {            CDB_LongBinary& val = dynamic_cast<CDB_LongBinary&> (param);            r = bcp_colptr(m_Cmd, (!val.IsNULL())? ((BYTE*) val.Value()) : (BYTE*)pb, i + 1)                == SUCCEED &&                bcp_collen(m_Cmd,                           val.IsNULL() ? SQL_NULL_DATA : (Int4) 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() ? SQL_NULL_DATA : sizeof(float), i + 1)                == SUCCEED ? SUCCEED : FAIL;        }        break;        case eDB_Double: {            CDB_Double& val = dynamic_cast<CDB_Double&> (param);            //DBFLT8 v = (DBFLT8) val.Value();            r = bcp_colptr(m_Cmd, (BYTE*) val.BindVal(), i + 1)                == SUCCEED &&                bcp_collen(m_Cmd,  val.IsNULL() ? SQL_NULL_DATA : sizeof(double), i + 1)                == SUCCEED ? SUCCEED : FAIL;        }        break;        case eDB_SmallDateTime: {            CDB_SmallDateTime& val =                dynamic_cast<CDB_SmallDateTime&> (param);            DBDATETIM4* dt = (DBDATETIM4*) pb;            DBDATETIME4_days(dt)        = val.GetDays();            DBDATETIME4_mins(dt)     = val.GetMinutes();            r = bcp_colptr(m_Cmd, (BYTE*) dt, i + 1)                == SUCCEED &&                bcp_collen(m_Cmd, val.IsNULL() ? SQL_NULL_DATA : sizeof(DBDATETIM4), 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() ? SQL_NULL_DATA : sizeof(DBDATETIME), 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, (DBINT) val.Size(), i + 1);        }        break;        case eDB_Image: {            CDB_Image& val = dynamic_cast<CDB_Image&> (param);            r = bcp_collen(m_Cmd, (DBINT) val.Size(), i + 1);        }        break;        default:            return false;        }        if (r != SUCCEED) {			m_Reporter.ReportErrors();            return false;		}    }    return true;}bool CODBC_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, 423004,                           "CODBC_BCPInCmd::SendRow", "cannot assign params");    }    if (bcp_sendrow(m_Cmd) != SUCCEED) {        m_HasFailed = true;		m_Reporter.ReportErrors();        throw CDB_ClientEx(eDB_Error, 423005,                           "CODBC_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, (DBINT) l, (BYTE*) buff) != SUCCEED) {                    m_HasFailed = true;					m_Reporter.ReportErrors();                    throw CDB_ClientEx(eDB_Error, 423006,                                       "CODBC_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 CODBC_BCPInCmd::Cancel(){    if(m_WasSent) {        DBINT outrow = bcp_done(m_Cmd);        m_WasSent= false;        return outrow == 0;    }    return true;}bool CODBC_BCPInCmd::CompleteBatch(){    if(m_WasSent) {        Int4 outrow = bcp_batch(m_Cmd);		if(outrow == -1) {			m_Reporter.ReportErrors();			return false;		}        return true;    }    return false;}bool CODBC_BCPInCmd::CompleteBCP(){    if(m_WasSent) {        Int4 outrow = bcp_done(m_Cmd);        m_WasSent= false;		if(outrow == -1) {			m_Reporter.ReportErrors();			return false;		}        return true;    }    return false;}void CODBC_BCPInCmd::Release(){    m_BR = 0;    if (m_WasSent) {        Cancel();        m_WasSent = false;    }    m_Connect->DropCmd(*this);    delete this;}CODBC_BCPInCmd::~CODBC_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:21:37  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5 * * Revision 1.5  2004/05/17 21:16:05  gorelenk * Added include of PCH ncbi_pch.hpp * * Revision 1.4  2003/05/08 20:30:24  soussov * CDB_LongChar CDB_LongBinary added * * Revision 1.3  2002/09/12 14:14:59  soussov * fixed typo in binding [var]char/binary with NULL value * * Revision 1.2  2002/09/11 20:23:54  soussov * fixed bug in binding [var]char/binary with NULL value * * Revision 1.1  2002/06/18 22:06:24  soussov * initial commit * * * =========================================================================== */

⌨️ 快捷键说明

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