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

📄 csqlctlibrary.cpp

📁 很好用的数据库连接组件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
int CSYBASEDriverPrivate::syb_con_init (){//	TRACE("临时调试");		LOG(NULL,0,"上下文结构初始化......");	syb_ctx_init ();		CS_RETCODE retcode1;	CS_RETCODE retcode2;	i_driver_connection = NULL;			LOG(NULL,0,"分配联接结构......");	i_return_code = ct_con_alloc (cs_context, &(i_driver_connection));	if (i_return_code != CS_SUCCEED)	{		ERRLOG(NULL,0,"分配联接结构失败,异常返回");		return SYBASE_RETURN_FAIL;	}	LOG(NULL,0,"分配联接结构成功");	# if !defined(_REENTRANT)	/*		** Install client and server message handlers.	*/	if (i_return_code == CS_SUCCEED)	{		LOG(NULL,0,"注册客户端回调......");		retcode1 = ct_callback (NULL, i_driver_connection, CS_SET,\			CS_CLIENTMSG_CB, (void*)syb_clientmsg_cb);		if (retcode1 != CS_SUCCEED)		{			ERRLOG(NULL,0,"注册客户端回调失败");		}	}	if (i_return_code == CS_SUCCEED)	{		LOG(NULL,0,"注册服务端回调......");		retcode2 = ct_callback (NULL, i_driver_connection, CS_SET, CS_SERVERMSG_CB, (void*)syb_servermsg_cb);	//注册服务器端回调		if (retcode2 != CS_SUCCEED)		{			ERRLOG(NULL,0,"注册服务端回调失败");		}	}	# endif	return SYBASE_RETURN_SUCCEED;	//返回成功}/*================================================================================** 函数名称: CSYBASEDriverPrivate::syb_con_cleanup** 主要功能: 清除联接结构** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** ** ** ** 出口参数:** 类型: 作用** int 成功返回SYBASE_RETURN_SUCCEED,失败返回SYBASE_RETURN_FAIL** 修改记录:=================================================================================== */intCSYBASEDriverPrivate::syb_con_cleanup (){  CS_RETCODE retcode;  CS_INT close_option;  i_return_code=CS_SUCCEED;  if(i_driver_connection!=NULL)  {    i_return_code = ct_close (i_driver_connection, CS_UNUSED);	//正常关闭联接    if (i_return_code != CS_SUCCEED)	//关闭失败    {//      DB_TRACE (5, "SYBASE", ("syb_con_cleanup:ct_close(CS_UNUSED) failed\n"));      i_return_code = ct_close (i_driver_connection, CS_FORCE_CLOSE);	//强制关闭      if (i_return_code != CS_SUCCEED)	//强制关闭失败      {//        DB_TRACE (5, "SYBASE",("syb_con_cleanup: ct_close(CS_FORCE_CLOSE) failed\n"));      }    }    i_return_code = ct_con_drop (i_driver_connection);	//清除联接    i_driver_connection = NULL;  }  if (i_return_code != CS_SUCCEED)	//不成功  {//    DB_TRACE (5, "SYBASE", ("syb_con_cleanup: ct_con_drop() failed\n"));  }  return syb_ctx_cleanup ();		//将上下文结构清除}//构造函数,进行初始化CSYBASEResultPrivate::CSYBASEResultPrivate ():CSYBASEDriverPrivate (){  i_buf = NULL;		//外部缓冲指针置为空  i_nRows = -1;			//行数为-1  i_nColumns = -1;		//列数为-1  for (int i = 0; i < SYBASE_MAX_TABLE_COLUMNS + 1; i++)  {    strcpy (i_cRowBuf[i], "");	//将内部缓冲清空    memset (&i_RowDesc[i], 0, CS_SIZEOF (i_RowDesc[i]));	//将列描述数组清空  }}CSYBASEResultPrivate::~CSYBASEResultPrivate (){  syb_cmd_cleanup ();		//清除命令结构}boolCSYBASEResultPrivate::res_cmd_succeed (){  if (i_result_res_type == CS_CMD_SUCCEED)	//如果命令成功  {    return true;  }  else  {    return false;  }}bool CSYBASEResultPrivate::res_cmd_have_result (){  if (i_result_res_type == CS_STATUS_RESULT || i_result_res_type == CS_PARAM_RESULT || i_result_res_type == CS_ROW_RESULT || i_result_res_type == CS_CURSOR_RESULT || i_result_res_type == CS_COMPUTE_RESULT)	//如果命令返回结果  {    return true;  }  else  {    return false;  }}boolCSYBASEResultPrivate::res_cmd_fail (){  if (i_result_res_type == CS_CMD_FAIL)	//如果命令失败  {    return true;  }  else  {    return false;  }}boolCSYBASEResultPrivate::res_cmd_done (){  if (i_result_res_type == CS_CMD_DONE)	//如果命令结束  {    return true;  }  else  {    return false;  }}boolCSYBASEResultPrivate::res_succeed (){  if (i_result_ret_code == CS_SUCCEED)	//如果结果集返回成功  {    return true;  }  else  {    return false;  }}boolCSYBASEResultPrivate::res_end (){  if (i_result_ret_code == CS_END_RESULTS)	//如果结果集结束  {    return true;  }  else  {    return false;  }}/*================================================================================** 函数名称: CSYBASEResultPrivate::syb_cmd_init** 主要功能: 初始化命令结构** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** ** ** ** 出口参数:** 类型: 作用** int 成功返回SYBASE_RETURN_SUCCEED,失败返回SYBASE_RETURN_FAIL** 修改记录:=================================================================================== */intCSYBASEResultPrivate::syb_cmd_init (){  i_return_code = ct_cmd_alloc (i_driver_connection, &i_cs_cmd);	//分配命令结构  if (i_return_code != CS_SUCCEED)	//不成功  {//    DB_TRACE (5, "SYBASE", ("ct_cmd_alloc failed\n"));    return SYBASE_RETURN_FAIL;	//返回失败  }//  DB_TRACE (5, "SYBASE", ("ct_cmd_alloc ok\n"));  return SYBASE_RETURN_SUCCEED;	//返回成功}/*================================================================================** 函数名称: CSYBASEResultPrivate::syb_cmd_cleanup** 主要功能: 清除命令结构** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** ** ** ** 出口参数:** 类型: 作用** int 成功返回SYBASE_RETURN_SUCCEED,失败返回SYBASE_RETURN_FAIL** 修改记录:=================================================================================== */intCSYBASEResultPrivate::syb_cmd_cleanup (){  if (i_cs_cmd != NULL)  {    i_return_code = ct_cancel (NULL, i_cs_cmd, CS_CANCEL_ALL);	//取消命令的后续动作    if (i_return_code != CS_SUCCEED)    {//      DB_TRACE (5, "SYBASE", ("ct_cancel failed\n"));    }    i_return_code = ct_cmd_drop (i_cs_cmd);	//清除命令结构    i_cs_cmd = NULL;    if (i_return_code != CS_SUCCEED)    {//      DB_TRACE (5, "SYBASE", ("ct_cmd_drop failed\n"));      return SYBASE_RETURN_FAIL;	//返回失败    }//    DB_TRACE (5, "SYBASE", ("ct_cmd_drop ok\n"));  }  return SYBASE_RETURN_SUCCEED;	//返回失败}/*================================================================================** 函数名称: CSYBASEResultPrivate::syb_get_describe** 主要功能: 得到结果集的描述** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** ** ** ** 出口参数:** 类型: 作用** int 成功返回SYBASE_RETURN_SUCCEED,失败返回SYBASE_RETURN_FAIL** 修改记录:=================================================================================== */intCSYBASEResultPrivate::syb_get_describe (){  CS_INT num_cols;  CS_INT i;  CS_INT j;  CS_INT rows_read;  CS_INT disp_len;  i_row_count_read = 0;  i_nColumns = -1;  i_return_code = ct_res_info (i_cs_cmd, CS_NUMDATA, &i_nColumns, CS_UNUSED, NULL);	//得到结果集的列数  if (i_return_code != CS_SUCCEED)	//失败  {//    DB_TRACE (6, "SYBASE", (" ct_res_info() failed\n"));    return SYBASE_RETURN_FAIL;	//返回失败  }  if (i_nColumns <= 0)		//得到列数小于0  {//    DB_TRACE (6, "SYBASE", ("ct_res_info() returned zero columns\n"));    return SYBASE_RETURN_FAIL;	//返回失败  }  for (i = 0; i < i_nColumns; i++)	//每一列进行  {    i_return_code = ct_describe (i_cs_cmd, (i + 1), &i_RowDesc[i + 1]);	//得到当前列的描述信息    if (i_return_code != CS_SUCCEED)	//失败    {//      DB_TRACE (6, "SYBASE", ("ct_describe() failed\n"));      return SYBASE_RETURN_FAIL;	//返回失败    }  }  return SYBASE_RETURN_SUCCEED;	//返回成功}/*================================================================================** 函数名称: CSYBASEResultPrivate::syb_bind_data** 主要功能: 绑定结果集** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** 1 (char*)[] buf 绑定的输出缓冲 为空绑定到内部** 2 int nBufNum 缓冲大小 ** ** 出口参数:** 类型: 作用** int 成功返回SYBASE_RETURN_SUCCEED,失败返回SYBASE_RETURN_FAIL** 修改记录:=================================================================================== */intCSYBASEResultPrivate::syb_bind_data (char (*result_buf)[SYBASE_MAX_COLUMN_LENGTH], int nBufNum){  CS_DATAFMT datafmt[SYBASE_MAX_TABLE_COLUMNS + 1];	//列描述结构的数组  int i;  for (i = 0; i < SYBASE_MAX_TABLE_COLUMNS; i++)	//针对整个结构数组的每一项  {    memset (&datafmt[i + 1], 0, CS_SIZEOF (datafmt[i + 1]));	//初始化结构项  }  for (i = 0; i < i_nColumns; i++)	//针对每一列  {    datafmt[i + 1].maxlength = SYBASE_MAX_COLUMN_LENGTH;	//列的最大长度设为SYBASE_MAX_COLUMN_LENGTH    datafmt[i + 1].datatype = CS_CHAR_TYPE;	//数据类型设为字符串    datafmt[i + 1].format = CS_FMT_NULLTERM;	//格式设为null结束的字符串    if (result_buf == NULL)	//为NULL绑定到内部    {      i_buf = i_cRowBuf;      i_return_code = ct_bind (i_cs_cmd, (i + 1), &datafmt[i + 1], &i_cRowBuf[i + 1], NULL, NULL);	//绑定到内部缓冲i_cRowBuf    }    else    {      i_buf = result_buf;	//记录外部缓冲地址      i_return_code = ct_bind (i_cs_cmd, (i + 1), &datafmt[i + 1], &result_buf [ i + 1], NULL, NULL);	//进行绑定    }    if (i_return_code != CS_SUCCEED)	//绑定失败    {//      DB_TRACE (6, "SYBASE", ("ct_bind() failed\n"));      return SYBASE_RETURN_FAIL;	//返回失败    }  }  return SYBASE_RETURN_SUCCEED;	//返回成功}/*================================================================================** 函数名称: CSYBASEResultPrivate::syb_fetch_data** 主要功能: 索取一行数据** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** ** ** ** 出口参数:** 类型: 作用** int 成功返回SYBASE_RETURN_SUCCEED,失败返回SYBASE_RETURN_FAIL** 修改记录:=================================================================================== */intCSYBASEResultPrivate::syb_fetch_data (){  i_return_code = ct_fetch (i_cs_cmd, CS_UNUSED, CS_UNUSED, CS_UNUSED, (CS_INT *) NULL);	//调用sybase库函数索取数据  if (i_return_code == CS_SUCCEED)	//成功  {    ++i_row_count_read;		//已读行数加1//    DB_TRACE (6, "SYBASE", ("i_row_count_read:%d\n", i_row_count_read));    return SYBASE_RETURN_SUCCEED;	//返回成功  }  else if (i_return_code == CS_END_DATA)	//索取完毕  {    //syb_end_cmd (SYBASE_CANCEL_CURR);		//结束处理//    DB_TRACE (6, "SYBASE", ("ct_fetch() end\n"));    return SYBASE_RETURN_FAIL;	//返回失败  }  else				//失败  {    //syb_end_cmd (SYBASE_CANCEL_CURR);		//结束处理//    DB_TRACE (6, "SYBASE", ("ct_fetch() fail\n"));    return SYBASE_RETURN_FAIL;	//返回失败  }}/*================================================================================** 函数名称: CSYBASEResultPrivate::syb_execute_cmd** 主要功能: 执行命令** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** 1 char* cmdbuf 传递命令 ** ** ** 出口参数:** 类型: 作用** int 成功返回SYBASE_RETURN_SUCCEED,失败返回SYBASE_RETURN_FAIL** 修改记录:=================================================================================== */int CSYBASEResultPrivate::syb_execute_cmd (char *cmdbuf){//	TRACE("临时调试");		if ((i_return_code = ct_command (i_cs_cmd, CS_LANG_CMD, cmdbuf, CS_NULLTERM, CS_UNUSED)) != CS_SUCCEED)	{		ERRLOG(NULL,0,"准备命令失败,异常返回");		return SYBASE_RETURN_FAIL;	}	i_return_code = ct_send (i_cs_cmd);	if (i_return_code != CS_SUCCEED)	{		ERRLOG(NULL,0,"命令发送失败,异常返回");		return SYBASE_RETURN_FAIL;	}	return SYBASE_RETURN_SUCCEED;	//返回成功}/*================================================================================** 函数名称: CSYBASEResultPrivate::syb_end_cmd** 主要功能: 命令结束处理** 入口参数: 无 ** 序号 参数类型 参数名称 作用 说明** 1 int nOpt 标示结束当前命令还是整个联接的命令 ** 出口参数:** 类型: 作用** int 成功返回SYBASE_RETURN_SUCCEED,失败返回SYBASE_RETURN_FAIL** 修改记录:=================================================================================== */int CSYBASEResultPrivate::syb_end_cmd (int nAllorCurr,int nConorCmd){	CS_RETCODE retcode;//	TRACE("临时调试");	if (nConorCmd == SYBASE_CANCEL_COMMAND)	{		if(nAllorCurr==SYBASE_CANCEL_ALL)		{			retcode = ct_cancel (NULL, i_cs_cmd, CS_CANCEL_ALL);	//结束当前命令		}

⌨️ 快捷键说明

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