📄 csybasebcpresult.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 + -