📄 csqlctlibrary.h
字号:
#ifndef CSQL_CTLIBRARY_H#define CSQL_CTLIBRARY_H#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctpublic.h>#include <bkpublic.h>#include "CSqlDriver.h" #include "CSqlResult.h"#include "CSqlBcpResult.h"#include "sybase_common.h"#include "sybase_msg.h"class CSYBASEDriverPrivate{public: CSYBASEDriverPrivate (); //构造函数 ~CSYBASEDriverPrivate (); //析构函数public: CS_CONTEXT *cs_context; //类静态 sybase CS_CONTEXT 结构指针,所有联接基于此,整个进程一个 int cs_con_count; //记录基于cs_context的联接个数,整个进程一个 CS_CONNECTION *i_driver_connection; //sybase联接结构指针 CS_RETCODE i_return_code; //记录上一ct函数的执行结果 char i_username[SYBASE_MAXSTRINGLEN]; //记录用户名 char i_password[SYBASE_MAXSTRINGLEN]; //记录密码 char i_server[SYBASE_MAXSTRINGLEN]; //记录server名 char i_dbname[SYBASE_MAXSTRINGLEN]; //记录数据库名 char i_appname[SYBASE_MAXSTRINGLEN]; //记录应用名public: int syb_ctx_init (); //初始化上下文结构 *cs_context //以相应的参数连接服务器 int syb_connect (const char *username, //用户名 const char *password, //密码 const char *server, //服务器名 const char *dbname = NULL, //数据库名 const char *appname = NULL //应用名 ); int syb_ctx_cleanup (); //清除上下文结构*cs_context int syb_con_init (); //初始化联接结构*i_driver_connection int syb_con_cleanup (); //清除联接结构*i_driver_connection int syb_use_db (const char *dbname); //应用dbname数据库};class CSYBASEResultPrivate:public CSYBASEDriverPrivate{public: CSYBASEResultPrivate (); ~CSYBASEResultPrivate ();public: int i_nRows; //保存行数 int i_nColumns; //列数 char (*i_buf)[SYBASE_MAX_COLUMN_LENGTH]; //如果输出缓冲在外部,此指针指向外部缓冲 int i_row_count_read; //已经读到的行数 char i_cRowBuf[SYBASE_MAX_TABLE_COLUMNS + 1][SYBASE_MAX_COLUMN_LENGTH ]; //内部输出缓冲 CS_DATAFMT i_RowDesc[SYBASE_MAX_TABLE_COLUMNS + 1]; //结果集的列描述数组(用CS_DATAFMT结构描述) CS_COMMAND *i_cs_cmd; //sybase命令结构(CS_COMMAND)指针 CS_RETCODE i_result_ret_code; //上一次结果集的返回代码 CS_INT i_result_res_type; //上一次结果集的结果类型public: int syb_cmd_init (); //初始化命令结构 int syb_cmd_cleanup (); //清除命令结构 int syb_execute_cmd (char *cmdbuf); //执行命令 int syb_end_cmd (int nAllorCurr=SYBASE_CANCEL_ALL,int nConorCmd = SYBASE_CANCEL_COMMAND); //命令的结束处理 int syb_get_result (); //得到结果集 int syb_get_describe (); //得到结果集的描述 int syb_bind_data (char (*result_buf)[SYBASE_MAX_COLUMN_LENGTH] = NULL, int nColNum = 0); //将结果集绑定到输出缓冲上 int syb_fetch_data (); //索取一行数据 bool res_cmd_succeed (); //命令是否成功 bool res_cmd_have_result (); //命令是否返回结果 bool res_cmd_done (); //命令是否结束 bool res_cmd_fail (); //命令是否失败 bool res_succeed (); //结果集是否成功 bool res_end (); //结果集是否结束};class CSYBASEBcpResultPrivate:public CSYBASEDriverPrivate{public: CSYBASEBcpResultPrivate (); ~CSYBASEBcpResultPrivate ();public: //bool i_buf_is_extern; //输出缓冲是否在外部(true在外部、false在内部) char (*i_buf)[SYBASE_MAX_COLUMN_LENGTH]; //如果输出缓冲在外部,此指针指向外部缓冲 int i_nRows; //保存行数 int i_nColumns; //列数 long i_row_count_read; //已经读到的行数 char i_cRowBuf[SYBASE_MAX_TABLE_COLUMNS+1][SYBASE_MAX_COLUMN_LENGTH]; //内部输出缓冲 //CS_DATAFMT datafmt; CS_DATAFMT datafmt[SYBASE_MAX_TABLE_COLUMNS+1]; //列描述结构数组 CS_INT i_colLen[SYBASE_MAX_TABLE_COLUMNS + 1]; CS_DATAFMT i_RowDesc[SYBASE_MAX_TABLE_COLUMNS + 1];//结果集的列描述数组(用CS_DATAFMT结构描述) CS_BLKDESC *i_blk_desc; //bcp的内部描述指针(所有操作基于此结构) CSYBASEResultPrivate *i_cmd; //查询结果集私有类的指针,用于在bcp内部执行命令public: int syb_get_table_columns (const char *table_name); //得到表的列数 int syb_blk_origin (); //进行bcp的初始准备 int syb_blk_init (const char *table_name, int direction); //针对table_name进行bcp的初始化 int syb_blk_get_describe (); //得到bcp结果集的描述 int syb_blk_bind_data (char (*result_buf)[SYBASE_MAX_COLUMN_LENGTH] = NULL, int nBufNum = 0); //将输出绑定到结果集缓冲 int syb_blk_mybind_data ();// int syb_blk_deal_data (); //进行一次bcp处理 int syb_blk_done (int nOpt); //作提交处理(部分提交或全部提交)};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -