📄 csqlbcp.cpp
字号:
#include "stdafx.h"
#include "CSqlBcp.h"
#include "CSqlConnection.h"
#include "csql.h"
#include "comlog.h"
CSqlBcp::CSqlBcp(CSqlBcpResult*r)
{
TRACE("CSqlBcp::CSqlBcp(CSqlBcpResult*r)");
d=new CSqlBcpResultShared(r);
}
CSqlBcp ::~CSqlBcp()
{
if(d->deref())
{
delete d ;
// need delete when no ref .
d=NULL ;
}
}
CSqlBcp::CSqlBcp(const CSqlBcp&other):d(other.d)
{
d->ref();
// only need add a ref
}
CSqlBcp&CSqlBcp::operator=(const CSqlBcp&other)
{
other.d->ref();
// add a ref in other CSqlBcpquery
if(d->deref())
{
delete d ;
d=NULL ;
}
d=other.d ;
return*this ;
}
/*================================================================================
** 函数名称: CSqlBcp::CSqlBcp (const string & table, CSqlConnection * db)
** 主要功能: 构造函数,初始化一个bcp过程。
** 入口参数:
** 序号 参数类新 参数名称 作用 说明
** 1 const string & table bcp的表
** 2 CSqlConnection * db 使用的连接 为空为缺省连接。
** 出口参数: 无
** 修改记录:
** 序号 修改人 修改日期 修改内容 修改目的
**
=================================================================================== */
CSqlBcp::CSqlBcp(const string&table,CSqlConnection*db)
{
//TRACE("临时调试");
d=new CSqlBcpResultShared(0);
CSqlConnection*database=db ;
if(!database)
{
database=CSqlConnection::connection();
}
if(database)
{
*this=database->driver()->createBcp();
}
if(table!="")
{
TRACE("临时调试");
begin(table);
}
}
bool CSqlBcp::isActive()const
{
if(!d->bcpResult) return FALSE ;
return d->bcpResult->isActive();
}
bool CSqlBcp::bind(char buf[][256],int len)const
{
//TRACE("bool CSqlBcp::bind(...)");
if(!d->bcpResult) return FALSE ;
return d->bcpResult->bind(buf,len);
}
bool CSqlBcp::begin(const string&table)const
{
if(!d->bcpResult)
{
return false ;
}
return d->bcpResult->begin(table);
}
bool CSqlBcp::start(const string&table)const
{
if(!d->bcpResult)
{
return false ;
}
//TRACE("bool CSqlBcp::start(...)");
return d->bcpResult->start(table);
}
bool CSqlBcp::send()const
{
if(!d->bcpResult)
{
return FALSE ;
}
LOG(NULL,0,"调用CSqlBcpResult::send(...)");
return d->bcpResult->send();
}
bool CSqlBcp::end(bool needClose)const
{
if(!d->bcpResult)
{
return FALSE ;
}
LOG(NULL,0,"调用CSqlBcpResult::end(...)");
return d->bcpResult->end(needClose);
}
/*================================================================================
** 函数名称: bool CSqlBcp::set( int cols , const CVariant& var ) const
** 主要功能: 设置缓冲区列的内容
** 入口参数:
** 序号 参数类新 参数名称 作用 说明
** 1 int cols 列索引
** 2 const CVariant& v 要设置的值
** 出口参数: 类型: bool 作用:是否成功
** 修改记录:
** 序号 修改人 修改日期 修改内容 修改目的
**
=================================================================================== */
bool CSqlBcp::set(int cols,const CVariant&var)const
{
if(!d->bcpResult)
{
return FALSE ;
}
return d->bcpResult->set(cols,var);
}
#if 1
bool CSqlBcp::set(int cols,const char*var)const
{
if(!d->bcpResult)
{
return FALSE ;
}
return d->bcpResult->set(cols,var);
}
bool CSqlBcp::set(int cols,int var)const
{
if(!d->bcpResult)
{
return FALSE ;
}
return d->bcpResult->set(cols,var);
}
#endif
char*CSqlBcp::operator[](int cols)const
{
if(!d->bcpResult)
{
return NULL ;
}
return(*d->bcpResult)[cols];
}
const CSqlDriver* CSqlBcp::driver()const
{
if(!d->bcpResult) return 0 ;
return d->bcpResult->driver();
}
const CSqlBcpResult* CSqlBcp::result()const
{
return d->bcpResult ;
}
/*
发送了多少行
*/
int CSqlBcp::row()const
{
if(!d->bcpResult)
{
return 0 ;
}
return d->bcpResult->row();
}
/*
上次bcp了多少行
*/
int CSqlBcp::lastRow()const
{
if(!d->bcpResult)
{
return 0 ;
}
return d->bcpResult->lastRow();
}
CSqlError CSqlBcp::lastError()const
{
if(!d->bcpResult) return CSqlError();
return d->bcpResult->lastError();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -