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

📄 csqlbcp.cpp

📁 很好用的数据库连接组件
💻 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 + -