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

📄 csybasebcpresult.cpp

📁 很好用的数据库连接组件
💻 CPP
字号:
/*=================================================================** 摘 要: 实现 sybase 驱动 sybase 查询结果集 sybase bcp 结果集==================================================================*/#include "stdafx.h"#include "CSybaseBcpResult.h"#include "CSqlCtlibrary.h"#include "comlog.h"//以下为CSYBASEBcpResult的实现/*================================================================================** 函数名称: CSYBASEBcpResult::CSYBASEBcpResult** 主要功能: //构造实现** 入口参数: ** 序号 参数类型 参数名称 作用 说明** 1 CSYBASEDriver db 所基于的驱动 ** ** ** 出口参数:无** 修改记录:=================================================================================== */CSYBASEBcpResult::CSYBASEBcpResult (const CSYBASEDriver * db):CSqlBcpResult(db) //CSqlResult类的sybase实现,以db为驱动{	TRACE("临时调试");	thePrivate = new CSYBASEBcpResultPrivate ();	//构造bcp结果集的私有类	//此bcp结果集所基于的联接驱动是驱动参数db	thePrivate->i_driver_connection = db->thePrivate->i_driver_connection;	//记录此联接的 用户名、密码、server名、数据库名、应用名	strcpy (thePrivate->i_username, db->thePrivate->i_username);	strcpy (thePrivate->i_password, db->thePrivate->i_password);	strcpy (thePrivate->i_server, db->thePrivate->i_server);	strcpy (thePrivate->i_dbname, db->thePrivate->i_dbname);	strcpy (thePrivate->i_appname, db->thePrivate->i_appname);	thePrivate->syb_blk_origin ();	//将私有类进行预处理}CSYBASEBcpResult::~CSYBASEBcpResult ()	//析构{	//	TRACE("临时调试");	delete thePrivate;		//析构私有类	thePrivate = NULL;}/*================================================================================** 函数名称: CSYBASEBcpResult::fCheckTable** 主要功能: 查询表的列数** 入口参数:** 序号 参数类型 参数名称 作用 说明** 1 string tableName 表名 ** 出口参数:** 类型: 作用** int 返回列数**** 修改记录=================================================================================== */int CSYBASEBcpResult::fCheckTable (const string & tableName){//	TRACE("int CSYBASEBcpResult::fCheckTable (...)");	int nReturn = thePrivate->syb_get_table_columns (tableName.c_str ());	return nReturn;}/*================================================================================** 函数名称: CSYBASEBcpResult::fCheckPoint** 主要功能: 进行检查点处理** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** ** 出口参数: 类型: bool 作用:成功返回true 失败返回false** 修改记录=================================================================================== */boolCSYBASEBcpResult::fCheckPoint (){//	TRACE("临时调试");  int nReturn;  nReturn = thePrivate->i_cmd->syb_execute_cmd ((char *) "checkpoint");	//发送检查点命令  if (nReturn != SYBASE_RETURN_SUCCEED)	//失败处理  {    thePrivate->i_cmd->syb_end_cmd ();	//命令结束处理    return false;		//失败返回false  }  nReturn = thePrivate->i_cmd->syb_get_result ();	//得到结果集  if (nReturn != SYBASE_RETURN_SUCCEED)	//失败处理  {    thePrivate->i_cmd->syb_end_cmd ();	//命令结束处理    return false;		//失败返回false  }  thePrivate->i_cmd->syb_end_cmd ();	//命令结束处理  return true;			//成功返回true}/*================================================================================** 函数名称: CSYBASEBcpResult::fBind** 主要功能: 将输出绑定到内存区** 入口参数: ** 序号 参数类型 参数名称 作用 说明** 1 char (*)[] buf 记录内存指针 ** 2 int len 记录数组长度 ** 3 ** 出口参数: 类型: bool 作用:成功返回true 失败返回false** 修改记录:=================================================================================== */bool CSYBASEBcpResult::fBind (char (*buf)[SYBASE_MAX_COLUMN_LENGTH], int len){	//TRACE("bool CSYBASEBcpResult::fBind (...)");	LOG(NULL,0,"进行BIND操作 -- 00 --:调用私有类的syb_bind_data函数");	if (thePrivate->syb_blk_bind_data (buf, len) == SYBASE_RETURN_SUCCEED)	{		LOG(NULL,0,"成功");		return true;	}	else	{		LOG(NULL,0,"失败");		//    DB_TRACE (5, "SYBASE", ("fBind fail\n"));		return false;	}}/*================================================================================** 函数名称: CSYBASEBcpResult::fSend** 主要功能: 进行一次提交** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** ** 出口参数: 类型: bool 作用:成功返回true 失败返回false** 修改记录=================================================================================== */bool CSYBASEBcpResult::fSend (){	//	TRACE("临时调试");	int nReturn;	LOG(NULL,0,"调用私有类CSYBASEBcpResultPrivate::syb_blk_deal_data(...)");	nReturn = thePrivate->syb_blk_deal_data ();	if (nReturn == SYBASE_RETURN_SUCCEED)	{		return true;	}	else	{		ERRLOG(NULL,0,"调用私有类CSYBASEBcpResultPrivate::syb_blk_deal_data(...),处理成功");		return false;	}}/*================================================================================** 函数名称: CSYBASEBcpResult::fStart** 主要功能: 对表tableName进行bcp的预处理**** 入口参数:** 序号 参数类型 参数名称 作用 说明** 1 string tableName 表名** ** 出口参数:** 类型: 作用** bool 成功返回true 否则返回false**** 修改记录=================================================================================== */bool CSYBASEBcpResult::fStart (const string & tableName){	int nReturn;		//TRACE("bool CSYBASEBcpResult::fStart (...)");		if (!driver ())	{		ERRLOG(NULL,0,"未有驱动返回失败");		return false;	}	if (!driver ()->isOpen () || driver ()->isOpenError ())	{		ERRLOG(NULL,0,"驱动未打开或有错误返回失败");				return false;	}	LOG1(NULL,0,"进行BCP操作预处理 -- 00 --:操作表 = [%s];",tableName.c_str());		nReturn = thePrivate->syb_blk_init (tableName.c_str (), SYBASE_BLK_IN);			if (nReturn == SYBASE_RETURN_SUCCEED)	{		LOG1(NULL,0,"进行BCP操作预处理 -- 01 --:针对表[%s]进行的BCP初始化成功,获取BCP结果集的描述",tableName.c_str ());		nReturn = thePrivate->syb_blk_get_describe ();		if (nReturn == SYBASE_RETURN_SUCCEED)	//syb_blk_get_describe成功		{			LOG1(NULL,0,"针对表[%s]的BCP初始化,得到BCP结果集成功",tableName.c_str ());			return true;		}		else		{			ERRLOG1(NULL,0,"针对表[%s]的BCP初始化,得到BCP结果集失败",tableName.c_str ());			return false;		}	}	else	{		ERRLOG1(NULL,0,"针对表[%s]进行的BCP初始化失败",tableName.c_str ());		return false;	}}/*================================================================================** 函数名称: CSYBASEBcpResult::fEnd** 主要功能: 结束处理**** 入口参数:** 序号 参数类型 参数名称 作用 说明** 1 bool all true 为全部提交 false 为部分提交** ** 出口参数:** 类型: 作用** bool 成功返回true 否则返回false**** 修改记录=================================================================================== */bool CSYBASEBcpResult::fEnd (bool all){	//	TRACE("临时调试");	//  DB_TRACE (5, "SYBASE", ("fEnd\n"));	if (all == true)		//全部提交	{		thePrivate->syb_blk_done (SYBASE_BLK_DONE_ALL);	//调用私有类的syb_blk_done进行全部提交	}	else				//部分提交	{		thePrivate->syb_blk_done (SYBASE_BLK_DONE_BATCH);	//调用私有类的syb_blk_done进行部分提交	}	return true;}

⌨️ 快捷键说明

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