1.由于郭海龙修改了提供的库,导致增加了大量南瑞的头文件, 所以新建include目录用于存放所有的南瑞提供的同文件。 2. 修复sys_nicmonitor进程重启后,调用接口告警问题。 3. 增加USER_NUSP宏,用于nusp用户。 4. 由于新增了许多头文件且需交接给郭海龙,所以独立了一版2.0版本以用于区分。 修改: code/README 新文件: code/dep/42/dotconf#1.0.13-1.pkg.tar.gz 新文件: code/dep/42/run.sh 新文件: code/dep/90/libdotconf-dev_1.3-0.2_amd64.deb 新文件: code/dep/90/libdotconf-dev_1.3-0.2_arm64.deb 新文件: code/dep/90/libdotconf0_1.3-0.2_amd64.deb 新文件: code/dep/90/libdotconf0_1.3-0.2_arm64.deb 新文件: code/dep/90/run.sh 新文件: code/dep/libproc_common.so 新文件: code/dep/old/libman.so 新文件: code/dep/proc_common.cpp 新文件: code/sys_nicmonitor-code.tar.gz 修改: code/sys_nicmonitor/Makefile 修改: code/sys_nicmonitor/README 新文件: code/sys_nicmonitor/include/common_types.h 新文件: code/sys_nicmonitor/include/d5000_err.h 新文件: code/sys_nicmonitor/include/db_api/DeleteRecorder.h 新文件: code/sys_nicmonitor/include/db_api/codb_net.h 新文件: code/sys_nicmonitor/include/db_api/mc_rtdb_m.h 新文件: code/sys_nicmonitor/include/db_api/mc_rtdb_mng.h 新文件: code/sys_nicmonitor/include/db_api/odb_apinet.h 新文件: code/sys_nicmonitor/include/db_api/odb_apinet_rtdb_key.h 新文件: code/sys_nicmonitor/include/db_api/odb_apiop.h 新文件: code/sys_nicmonitor/include/db_api/odb_apiop.h.old 新文件: code/sys_nicmonitor/include/db_api/odb_app2id.h 新文件: code/sys_nicmonitor/include/db_api/odb_autolock.h 新文件: code/sys_nicmonitor/include/db_api/odb_baseindex.h 新文件: code/sys_nicmonitor/include/db_api/odb_ckeymanager.h 新文件: code/sys_nicmonitor/include/db_api/odb_common.h 新文件: code/sys_nicmonitor/include/db_api/odb_define.h 新文件: code/sys_nicmonitor/include/db_api/odb_double_overflow_hashindex.h 新文件: code/sys_nicmonitor/include/db_api/odb_field.h 新文件: code/sys_nicmonitor/include/db_api/odb_hashindex.h 新文件: code/sys_nicmonitor/include/db_api/odb_hashpk.h 新文件: code/sys_nicmonitor/include/db_api/odb_intel_ptr.h 新文件: code/sys_nicmonitor/include/db_api/odb_lock.h 新文件: code/sys_nicmonitor/include/db_api/odb_net.h 新文件: code/sys_nicmonitor/include/db_api/odb_net_m.h 新文件: code/sys_nicmonitor/include/db_api/odb_netfactory.h 新文件: code/sys_nicmonitor/include/db_api/odb_nooverflow_pk.h 新文件: code/sys_nicmonitor/include/db_api/odb_orbmgr.h 新文件: code/sys_nicmonitor/include/db_api/odb_profile.h 新文件: code/sys_nicmonitor/include/db_api/odb_prv_struct.h 新文件: code/sys_nicmonitor/include/db_api/odb_public.h 新文件: code/sys_nicmonitor/include/db_api/odb_rtdbbase.h 新文件: code/sys_nicmonitor/include/db_api/odb_rtdbfactory.h 新文件: code/sys_nicmonitor/include/db_api/odb_rtdbop.h 新文件: code/sys_nicmonitor/include/db_api/odb_rtdbtable.h 新文件: code/sys_nicmonitor/include/db_api/odb_struct.h 新文件: code/sys_nicmonitor/include/db_api/odb_system.h 新文件: code/sys_nicmonitor/include/db_api/odb_table.h 新文件: code/sys_nicmonitor/include/db_api/odb_tablebase.h 新文件: code/sys_nicmonitor/include/db_api/odb_tablemgr.h 新文件: code/sys_nicmonitor/include/db_api/odb_tablenet.h 新文件: code/sys_nicmonitor/include/db_api/odb_tableop.h 新文件: code/sys_nicmonitor/include/db_api/odb_where.h 新文件: code/sys_nicmonitor/include/db_api/pub_buf.h 新文件: code/sys_nicmonitor/include/db_api/rtdb_graph_name_list.h 新文件: code/sys_nicmonitor/include/db_api/server2proto.h 新文件: code/sys_nicmonitor/include/db_api/tab2idx.h 新文件: code/sys_nicmonitor/include/db_api/vl_get_data.h 新文件: code/sys_nicmonitor/include/db_api/vl_struct.h 新文件: code/sys_nicmonitor/include/db_api/vl_struct_m.cpp 新文件: code/sys_nicmonitor/include/db_api/vl_struct_m.h 新文件: code/sys_nicmonitor/include/db_com/CAppNo.h 新文件: code/sys_nicmonitor/include/db_com/CCharArray.h 新文件: code/sys_nicmonitor/include/db_com/CDataStream.h 新文件: code/sys_nicmonitor/include/db_com/CDbCommitClient.h 新文件: code/sys_nicmonitor/include/db_com/CDbMonitorClient.h 新文件: code/sys_nicmonitor/include/db_com/CDbMonitorLocal.h 新文件: code/sys_nicmonitor/include/db_com/CDbMonitorShm.h 新文件: code/sys_nicmonitor/include/db_com/CDbRepSet.h 新文件: code/sys_nicmonitor/include/db_com/CDbSem.h 新文件: code/sys_nicmonitor/include/db_com/CDbSemUse.h 新文件: code/sys_nicmonitor/include/db_com/CDbShm.h 新文件: code/sys_nicmonitor/include/db_com/CDyCfgLocal.h 新文件: code/sys_nicmonitor/include/db_com/CDyCommitClient.h 新文件: code/sys_nicmonitor/include/db_com/CDyMonitorClient.h 新文件: code/sys_nicmonitor/include/db_com/CDyMonitorLocal.h 新文件: code/sys_nicmonitor/include/db_com/CDyMonitorShm.h 新文件: code/sys_nicmonitor/include/db_com/CDySem.h 新文件: code/sys_nicmonitor/include/db_com/CDySemUse.h 新文件: code/sys_nicmonitor/include/db_com/CDyShm.h 新文件: code/sys_nicmonitor/include/db_com/CDyTagShmInfo.h 新文件: code/sys_nicmonitor/include/db_com/CErrorLog.h 新文件: code/sys_nicmonitor/include/db_com/CFindFile.h 新文件: code/sys_nicmonitor/include/db_com/CPrecTime.h 新文件: code/sys_nicmonitor/include/db_com/CRecordSet.h 新文件: code/sys_nicmonitor/include/db_com/CRedisAccess.h 新文件: code/sys_nicmonitor/include/db_com/CRepSet.h 新文件: code/sys_nicmonitor/include/db_com/CSaveReCommitSql.h 新文件: code/sys_nicmonitor/include/db_com/CSqlResultAlign.h 新文件: code/sys_nicmonitor/include/db_com/CSqlResultAlignClient.h 新文件: code/sys_nicmonitor/include/db_com/CSqlResultAlignClient2.h 新文件: code/sys_nicmonitor/include/db_com/DBAccess.h 新文件: code/sys_nicmonitor/include/db_com/DBCipher.h 新文件: code/sys_nicmonitor/include/db_com/DBConnectPool.h 新文件: code/sys_nicmonitor/include/db_com/DbFileNetIf.h 新文件: code/sys_nicmonitor/include/db_com/Hbase.h 新文件: code/sys_nicmonitor/include/db_com/Hbase_constants.h 新文件: code/sys_nicmonitor/include/db_com/Hbase_types.h 新文件: code/sys_nicmonitor/include/db_com/MyMutex.h 新文件: code/sys_nicmonitor/include/db_com/cross_region_sync_client.h 新文件: code/sys_nicmonitor/include/db_com/database_rep_m.h 新文件: code/sys_nicmonitor/include/db_com/db_commit_define.h 新文件: code/sys_nicmonitor/include/db_com/db_commit_m.h 新文件: code/sys_nicmonitor/include/db_com/db_error_define.h 新文件: code/sys_nicmonitor/include/db_com/db_extern.h 新文件: code/sys_nicmonitor/include/db_com/db_global.h 新文件: code/sys_nicmonitor/include/db_com/db_micro_define.h 新文件: code/sys_nicmonitor/include/db_com/db_monitor_define.h 新文件: code/sys_nicmonitor/include/db_com/db_monitor_define.h.old 新文件: code/sys_nicmonitor/include/db_com/db_monitor_extern.h 新文件: code/sys_nicmonitor/include/db_com/db_monitor_global.h 新文件: code/sys_nicmonitor/include/db_com/db_monitor_m.h 新文件: code/sys_nicmonitor/include/db_com/db_monitor_m.h.old 新文件: code/sys_nicmonitor/include/db_com/db_rep_lib_define.h 新文件: code/sys_nicmonitor/include/db_com/db_stat_m.h 新文件: code/sys_nicmonitor/include/db_com/db_stat_service_interface.h 新文件: code/sys_nicmonitor/include/db_com/ds_log.h 新文件: code/sys_nicmonitor/include/db_com/dy_commit_m.h 新文件: code/sys_nicmonitor/include/db_com/dy_monitor_define.h 新文件: code/sys_nicmonitor/include/db_com/dy_monitor_m.h 新文件: code/sys_nicmonitor/include/db_com/dy_public_m.h 新文件: code/sys_nicmonitor/include/db_com/dy_sample_define_m.h 新文件: code/sys_nicmonitor/include/db_com/dy_sample_define_service_interface.h 新文件: code/sys_nicmonitor/include/db_com/dy_stat_m.h 新文件: code/sys_nicmonitor/include/db_com/dy_stat_service_interface.h 新文件: code/sys_nicmonitor/include/db_com/hiredis.h 新文件: code/sys_nicmonitor/include/db_com/interpreter_define.h 新文件: code/sys_nicmonitor/include/db_com/interpreter_struct.h 新文件: code/sys_nicmonitor/include/db_com/lexical_anls.h 新文件: code/sys_nicmonitor/include/db_com/public_m.h 新文件: code/sys_nicmonitor/include/db_com/query_sample_m.h 新文件: code/sys_nicmonitor/include/db_com/query_sample_pi.h 新文件: code/sys_nicmonitor/include/db_com/query_sample_pi_m.h 新文件: code/sys_nicmonitor/include/db_com/query_sample_service_interface.h 新文件: code/sys_nicmonitor/include/db_com/query_sample_service_pi_interface.h 新文件: code/sys_nicmonitor/include/db_com/query_stat_m.h 新文件: code/sys_nicmonitor/include/db_com/query_stat_service_interface.h 新文件: code/sys_nicmonitor/include/db_com/rdb_commit_client.h 新文件: code/sys_nicmonitor/include/db_com/rdb_commit_m.h 新文件: code/sys_nicmonitor/include/db_com/rdb_define.pb.h 新文件: code/sys_nicmonitor/include/db_com/read.h 新文件: code/sys_nicmonitor/include/db_com/rtdbkey_defs.h 新文件: code/sys_nicmonitor/include/db_com/sample_data_client_base.h 新文件: code/sys_nicmonitor/include/db_com/sample_data_m.h 新文件: code/sys_nicmonitor/include/db_com/sample_define_m.h 新文件: code/sys_nicmonitor/include/db_com/sample_define_service_interface.h 新文件: code/sys_nicmonitor/include/db_com/sample_modify_m.h 新文件: code/sys_nicmonitor/include/db_com/sample_modify_service_interface.h 新文件: code/sys_nicmonitor/include/db_com/sds.h 新文件: code/sys_nicmonitor/include/db_com/server_define.h 新文件: code/sys_nicmonitor/include/db_com/sheetdataclient.h 新文件: code/sys_nicmonitor/include/db_com/sheetdataclient.h0604 新文件: code/sys_nicmonitor/include/db_com/sql_sp_client_base.h 新文件: code/sys_nicmonitor/include/db_com/sql_sp_define.h 新文件: code/sys_nicmonitor/include/db_com/sql_sp_m.h 新文件: code/sys_nicmonitor/include/db_com/sql_sp_send_client_base.h 新文件: code/sys_nicmonitor/include/db_com/sql_syntax_anls.h 新文件: code/sys_nicmonitor/include/db_com/sql_to_cime.h 新文件: code/sys_nicmonitor/include/db_com/sqlite_access.h 新文件: code/sys_nicmonitor/include/db_com/sqlite_server_client.h 新文件: code/sys_nicmonitor/include/db_com/sqlite_srv_m.h 新文件: code/sys_nicmonitor/include/db_com/store_access_client.h 新文件: code/sys_nicmonitor/include/db_com/trigger_sample_m.h 新文件: code/sys_nicmonitor/include/db_com/trigger_sample_service_interface.h 新文件: code/sys_nicmonitor/include/db_com/wholepubtools.h 新文件: code/sys_nicmonitor/include/db_com/wholesampledata.h 新文件: code/sys_nicmonitor/include/db_com/wholesqlsp.h 新文件: code/sys_nicmonitor/include/log_api.h 新文件: code/sys_nicmonitor/include/log_define.h 新文件: code/sys_nicmonitor/include/logclient.h 新文件: code/sys_nicmonitor/include/port_def.h 新文件: code/sys_nicmonitor/include/proc_common.h 新文件: code/sys_nicmonitor/include/scn_common.h 新文件: code/sys_nicmonitor/include/sysadm/proc_define.h 新文件: code/sys_nicmonitor/include/sysadm/scn_define.h 新文件: code/sys_nicmonitor/include/system.h 修改: code/sys_nicmonitor/mnic.c 修改: code/sys_nicmonitor/nicinfo_shm.c 修改: code/sys_nicmonitor/test.c 修改: code/sys_nicmonitor/version.h 新文件: code/test/test_nic 新文件: code/test/test_nic.cpp 新文件: packages/sys_nicmonitor-2.0-linx90-aarch64-bin-d5000.tar.gz 新文件: packages/sys_nicmonitor-2.0-linx90-aarch64-bin-nusp.tar.gz 新文件: packages/sys_nicmonitor-2.0-linx90-x86_64-bin-d5000.tar.gz 新文件: packages/sys_nicmonitor-2.0-linx90-x86_64-bin-nusp.tar.gz 重命名: sys_nicmonitor-arm-bin.tar.gz -> packages/sys_nicmonitor-arm-bin.tar.gz 重命名: sys_nicmonitor-arm.tar.gz -> packages/sys_nicmonitor-arm.tar.gz 新文件: packages/sys_nicmonitor-mips64-bin.tar.gz 新文件: packages/sys_nicmonitor-mips64.tar.gz Signed-off-by: Wei, Jing <jwei@linx-info.com>
1095 lines
51 KiB
C++
1095 lines
51 KiB
C++
//********************************************************************************
|
||
//
|
||
// AUTHOR : ZhangKeHeng
|
||
//
|
||
// FUNCTION : 商用库访问类定义
|
||
//
|
||
// TIME : 2003.05.17
|
||
//
|
||
// HISTORY :
|
||
// Datetime Action Author Reason
|
||
// ------------------------------------------------------------------------------
|
||
// 2003.05.17 Creation ZhangKeHeng
|
||
// 2003.09.01 Modify ZhangKeHeng AppKeyId AppId支持
|
||
// 2003.11.26 Modify ZhangKeHeng ORACLE LOB(Large OBject)支持
|
||
// 2003.12.06 Modify ZhangKeHeng SYBASE LOB(TEXT/IMAGE) 支持
|
||
// 2003.12.07 Modify ZhangKeHeng UNSIGNED CHAR -1支持
|
||
// time : 2011.01.13 ChenPeng 增加绑定变量接口相关结构
|
||
//********************************************************************************
|
||
|
||
#ifndef _DB_ACCESS_H
|
||
#define _DB_ACCESS_H
|
||
|
||
#ifdef __WINDOWS64
|
||
#ifdef DBACCESS_EXPORTS
|
||
#define DBACCESS_API __declspec(dllexport)
|
||
#else
|
||
#define DBACCESS_API __declspec(dllimport)
|
||
#endif
|
||
#else
|
||
#define DBACCESS_API
|
||
#endif
|
||
|
||
#include <iostream>
|
||
#include <vector>
|
||
#include <map>
|
||
#include <string>
|
||
#include <numeric>
|
||
#include <functional>
|
||
#include <algorithm>
|
||
#include <time.h>
|
||
#include <oci.h>
|
||
#ifdef _APP_SYS_SUBSTATION
|
||
#include "db_com/sqlite_server_client.h"
|
||
#endif
|
||
|
||
#ifdef _WIN64 // Windows compatible version
|
||
#define strcasecmp _stricmp
|
||
#endif
|
||
|
||
#define DB_SUCCESS 0
|
||
#define DB_FAIL -1
|
||
#define DB_NO_DATA 100
|
||
|
||
#define DB_AUTO_LOGOFF 0
|
||
#define DB_MANUAL_LOGOFF 1
|
||
|
||
#define DB_STATUS_CONNECT 0
|
||
#define DB_STATUS_DISCONNECT 1
|
||
|
||
#define GET_ALL_RESULT -1
|
||
|
||
#define LOGIN_DEFAULT_MODE 0
|
||
#define LOGIN_THREADED_MODE 1
|
||
|
||
//统一C数据类型
|
||
#define DB_DATATYPE_STRING 1
|
||
#define DB_DATATYPE_UCHAR 2
|
||
#define DB_DATATYPE_SHORT 3
|
||
#define DB_DATATYPE_INT 4
|
||
#define DB_DATATYPE_DATETIME 5
|
||
#define DB_DATATYPE_FLOAT 6
|
||
#define DB_DATATYPE_DOUBLE 7
|
||
#define DB_DATATYPE_KEYID 8
|
||
#define DB_DATATYPE_BINARY 9
|
||
#define DB_DATATYPE_TEXT 10
|
||
#define DB_DATATYPE_IMAGE 11
|
||
#define DB_DATATYPE_APPKEYID 12
|
||
#define DB_DATATYPE_APPID 13
|
||
|
||
#define DB_DATATYPE_LONG 15
|
||
|
||
#define MAX_COL_NUMBER 1024
|
||
#define MAX_LOB_NUMBER 1024
|
||
#define MAX_COLNAME_LENGTH 255
|
||
#define MAX_PROCNAME_LENGTH 255
|
||
#define MAX_SQL_LENGTH 10240
|
||
#define QUERY_RECORD_BUF 102400 // 记录集预分配内存100K
|
||
|
||
#ifdef _ALPHA
|
||
#define READ_BUFSIZE 204800 //
|
||
#endif
|
||
#ifdef _IBM
|
||
#define READ_BUFSIZE 204800 //
|
||
#endif
|
||
#ifdef _SUN
|
||
#define READ_BUFSIZE 102400 //
|
||
#endif
|
||
#ifdef _HPUX
|
||
#define READ_BUFSIZE 204800 //
|
||
#endif
|
||
#ifdef _LINUX
|
||
#define READ_BUFSIZE 204800 //
|
||
#endif
|
||
|
||
struct DBACCESS_API TResultHead
|
||
{
|
||
int field_num;
|
||
int field_size;
|
||
int data_num;
|
||
int data_size;
|
||
int record_length;
|
||
int reach_max;
|
||
};
|
||
|
||
#ifndef _APP_SYS_SUBSTATION
|
||
struct DBACCESS_API TFieldInfo
|
||
{
|
||
short field_type;
|
||
short field_length;
|
||
char col_name[256];
|
||
};
|
||
#else
|
||
struct DBACCESS_API TFieldInfo
|
||
{
|
||
short field_type;
|
||
short field_length;
|
||
};
|
||
#endif
|
||
|
||
// Define the KeyID_Type's Description
|
||
struct DBACCESS_API TKeyidType
|
||
{
|
||
int record_id;
|
||
short column_id;
|
||
};
|
||
|
||
// Define the AppKeyID_Type's Description
|
||
//struct DBACCESS_API TAppKeyidType
|
||
//{
|
||
// int app_id;
|
||
// int record_id;
|
||
// short column_id;
|
||
//};
|
||
struct DBACCESS_API TAppKeyidType
|
||
{
|
||
long key_id;
|
||
int app_id;
|
||
};
|
||
|
||
// Define the AppID_Type's Description
|
||
struct DBACCESS_API TAppidType
|
||
{
|
||
int app_id;
|
||
int record_id;
|
||
};
|
||
|
||
#ifndef _APP_SYS_SUBSTATION
|
||
union DBACCESS_API UColumnVal
|
||
{
|
||
unsigned char unsigned_value;
|
||
short short_value;
|
||
int int_value;
|
||
float float_value;
|
||
double double_value;
|
||
OCIDate date_value;
|
||
unsigned char bin_value[10240];
|
||
char string_value[10240];
|
||
UColumnVal()
|
||
{
|
||
memset(this,0,sizeof(UColumnVal));
|
||
}
|
||
};
|
||
#endif
|
||
|
||
struct DBACCESS_API TFieldAttr {
|
||
//char *colName;
|
||
char colName[256];
|
||
unsigned int colNameLen;
|
||
unsigned short field_type;
|
||
unsigned int field_len;
|
||
unsigned char field_precision;
|
||
signed char field_scale;
|
||
TFieldAttr()
|
||
{
|
||
memset(this,0,sizeof(TFieldAttr));
|
||
}
|
||
};
|
||
|
||
using namespace std;
|
||
|
||
//错误信息结构
|
||
struct DBACCESS_API TErrorMsg
|
||
{
|
||
int err_no; //DBAccess错误号
|
||
int ora_errno; //数据库错误号
|
||
string dbaccess_err; //DBAccess错误信息
|
||
string db_err; //数据库错误信息
|
||
};
|
||
|
||
struct TDCIBindParaStru
|
||
{
|
||
unsigned short dci_type; // 绑定变量数据类型 具体数值参见dci.h中SQLT开头的一系列宏定义
|
||
unsigned int data_size; // 绑定变量数据长度
|
||
};
|
||
typedef vector<TDCIBindParaStru> SEQDCIBindParaStru;
|
||
|
||
//LOB使用的ResultHead
|
||
struct DBACCESS_API TLOBResultHead
|
||
{
|
||
int field_num;
|
||
int field_size;
|
||
int data_num;
|
||
int data_size;
|
||
vector<int> record_length_vec; //如果data_num==0则record_length_vec不可用
|
||
int reach_max;
|
||
};
|
||
|
||
//LOB使用的FieldInfo
|
||
struct DBACCESS_API TLOBFieldInfo
|
||
{
|
||
short field_type;
|
||
vector<int> field_length_vec; //field_length_vec.size等于TLOBResultHead中的data_num
|
||
//如果data_num == 0, 则field_length_vec.size = 1
|
||
};
|
||
|
||
//LOB内容结构
|
||
struct DBACCESS_API TLOBContent
|
||
{
|
||
unsigned char *lob_content;
|
||
int lob_content_size;
|
||
};
|
||
|
||
//UserSpecTypeMap first元素为指定域号
|
||
// second元素为用户指定数据类型,其取值为统一C数据类型
|
||
typedef map<int,int> UserSpecTypeMap;
|
||
|
||
#ifndef _APP_SYS_SUBSTATION
|
||
class DBACCESS_API CDbAccess
|
||
{
|
||
public:
|
||
//构造函数auto_logoff == true 或无参数时,不需要显示调用Logoff,会在析构函数中调用
|
||
//反之,程序需要显示调用Logoff注销数据库登录,否则连接没有释放
|
||
CDbAccess(bool auto_logoff = true);
|
||
|
||
//析构函数
|
||
~CDbAccess();
|
||
private:
|
||
OCIEnv *m_pEnvhp;
|
||
OCIError *m_pErrhp;
|
||
OCISvcCtx *m_pSvchp;
|
||
OCILobLocator *m_pLob;
|
||
|
||
//OCIStmt *m_pStmhp1;
|
||
//OCIStmt *m_pStmhp2;
|
||
|
||
private:
|
||
int PrintError(OCIError *errhp, sword status, string &err_string, int &ora_errno);
|
||
int InitHandles(ub4 mode,vector<TErrorMsg> &err_vec);
|
||
int InitOneStatement(OCIStmt **stmhp,vector<TErrorMsg> &err_vec);
|
||
int FreeOneStatement(OCIStmt *stmhp,vector<TErrorMsg> &err_vec);
|
||
int PrepareOneSentence(OCIStmt *stmhp,text *sql_sen,vector<TErrorMsg> &err_vec);
|
||
int ExecuteOneSelectSentence(OCIStmt *stmhp,vector<TErrorMsg> &err_vec);
|
||
int ExecuteOneModifySentence(OCIStmt *stmhp,ub4 commit_flag,int step,vector<TErrorMsg> &err_vec);
|
||
int ExecuteOneModifySentence(OCIStmt *stmhp,ub4 commit_flag,int step,vector<TErrorMsg> &err_vec,int &affect_record_num);
|
||
int ExecuteSentenceOnlyDiscribe(OCIStmt *stmhp,vector<TErrorMsg> &err_vec);
|
||
int FetchNextRow(OCIStmt *stmhp,int step,vector<TErrorMsg> &err_vec);
|
||
int CancelFetch(OCIStmt *stmhp,vector<TErrorMsg> &err_vec);
|
||
int GetFetchRowNum(OCIStmt *stmhp,int *stmrow,vector<TErrorMsg> &err_vec);
|
||
int DefineArrayOfStruct(OCIDefine *defhp,int recorderlen,int num_cols,vector<TErrorMsg> &err_vec);
|
||
int BindArrayOfStruct(OCIBind *defhp ,int recorderlen,int num_cols,vector<TErrorMsg> &err_vec);
|
||
int GetSelectColNum(OCIStmt *stmhp,int *col_num,vector<TErrorMsg> &err_vec);
|
||
int GetSingleColInfo(OCIStmt *stmhp,ub4 pos,TFieldAttr &field_attr,vector<TErrorMsg> &err_vec);
|
||
int BindByPosition(OCIStmt *stmhp,OCIBind **bind_pp,ub4 position,dvoid *value_p,sb4 value_size,ub2 data_type,dvoid *indicator_p,vector<TErrorMsg> &err_vec);
|
||
int BindByName(OCIStmt *stmhp,OCIBind **bind_pp,OraText *placeholder,dvoid *value_p,sb4 value_size,ub2 data_type,dvoid *indicator_p,vector<TErrorMsg> &err_vec);
|
||
int DefineByPosition(OCIStmt *stmhp,OCIDefine **define_pp,ub4 position,dvoid *value_p,sb4 value_size,ub2 data_type,dvoid *indicator_p,vector<TErrorMsg> &err_vec);
|
||
int CheckAndRestorePackageStatus(char *pck_name,vector<TErrorMsg> &err_vec);
|
||
// int ConvertSQLDateToTimet(char* date_ptr,time_t *osdate);
|
||
// int ConvertOCIDateToTimet(OCIDate odate,time_t *osdate);
|
||
// int ConvertTimetToOCIDate(time_t OsDate,OCIDate *OciDate);
|
||
string ConvertSQLDateToString(char* date_ptr);
|
||
|
||
private:
|
||
int m_Status;
|
||
int m_LoginMode;
|
||
int m_LogoffFlag;
|
||
private:
|
||
TKeyidType* ConvertKeyidToStruct(char *keyid);
|
||
TAppKeyidType* ConvertAppKeyidToStruct(char *keyid);
|
||
TAppidType* ConvertAppidToStruct(char *keyid);
|
||
// char* ConvertStructToKeyid(TKeyidType* keyid_type);
|
||
|
||
public:
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 数据库注册
|
||
- 输 入: user_name: 用户名称
|
||
passwd: 口令
|
||
server: 服务名
|
||
mode: 模式 LOGIN_DEFAULT_MODE 普通模式
|
||
LOGIN_THREADED_MODE 多线程模式
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int Login( char *user_name,
|
||
char *passwd,
|
||
char *server,
|
||
unsigned int mode,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 数据库注销
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int Logoff(vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取连接状态
|
||
- 输 入: 无
|
||
- 输 出: 无
|
||
- 返 回: DB_STATUS_CONNECT: 保持连接
|
||
DB_STATUS_DISCONNECT: 失去连接
|
||
----------------------------------------------------------------------------------*/
|
||
int GetConnectStatus();
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 设置连接状态
|
||
- 输 入: status: 设置连接状态
|
||
- 输 出: 无
|
||
- 返 回: DB_SUCCESS: 成功
|
||
----------------------------------------------------------------------------------*/
|
||
int SetConnectStatus(int status);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 开始事务
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int BeginTransaction(vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 提交事务
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int CommitTransaction(vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 回滚事务
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int RollbackTransaction(vector<TErrorMsg> &err_vec);
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行SQL命令,并提交
|
||
- 输 入: cmd_string: SQL命令
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteCommandWithCommit(char *cmd_string,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
int ExecuteCommandWithCommit(char *cmd_string,
|
||
int &affected_record_num,
|
||
vector<TErrorMsg> &err_vec);
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 利用绑定变量方式执行SQL命令,并提交
|
||
- 输入参数 : sql_str 需要提交SQL语句
|
||
- 输出参数 : out_db_error 错误信息
|
||
- 输入参数 : rep_flag 是否复制
|
||
- 返回值 : TRUE 执行成功
|
||
- FALSE 执行失败
|
||
----------------------------------------------------------------------------------*/
|
||
|
||
int BindExecuteCommandWithCommit(char *cmd_string, SEQDCIBindParaStru &seq_bind_para, void * data_buffer,
|
||
unsigned short * null_flag_buffer, unsigned int row_num,
|
||
vector<TErrorMsg> &err_vec);
|
||
|
||
|
||
// int ExecuteCommandWithCommitEx(char *cmd_string,
|
||
// vector<TErrorMsg> &err_vec
|
||
// );
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行SQL命令,不提交
|
||
- 输 入: cmd_string: SQL命令
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteCommandWithoutCommit(char *cmd_string,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取SQL查询返回结果集(不包含LOB类型数据)
|
||
- 输 入: query_string: SQL查询命令
|
||
max_result: 结果集最大行数,GET_ALL_RESULT表示取所有行
|
||
user_type_map: 用户指定返回数据类型,MAP类型
|
||
- 输 出: result_link: 结果集指针
|
||
result_indicator 是否为空指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryResult( char *query_string,
|
||
int max_result,
|
||
UserSpecTypeMap user_type_map,
|
||
char *&result_link,
|
||
signed short *&result_indicator,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取结果集的HEAD,FIELD,DATA指针
|
||
- 输 入: result_link: 结果集指针
|
||
- 输 出: result_head_ptr: HEAD指针
|
||
field_info_ptr: FIELD指针
|
||
data_ptr: DATA指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryHead( char *result_link,
|
||
TResultHead *&result_head_ptr,
|
||
TFieldInfo *&field_info_ptr,
|
||
char *&data_ptr,
|
||
vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取存储过程查询返回结果集
|
||
- 输 入: pck_name: 包名称(SYBASE该参数为NULL)
|
||
proc_name: 存储过程名称
|
||
parm_vec: 存储过程参数Vector(1~n个),对于ORACLE返回游标参数无需指定
|
||
参数以vector<string>形式传入,即不论类型全部为string
|
||
日期型参数以YYYY-MM-DD HH:MM:SS形式传入
|
||
max_result: 结果集最大行数,GET_ALL_RESULT表示取所有行
|
||
user_type_map: 用户指定返回数据类型,MAP类型
|
||
- 输 出: result_link: 结果集指针
|
||
result_indicator 是否为空指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetProcedureResult( char *pck_name,
|
||
char *proc_name,
|
||
vector<string> parm_vec,
|
||
int max_result,
|
||
UserSpecTypeMap user_type_map,
|
||
char *&result_link,
|
||
signed short *&result_indicator,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行存储过程(无返回结果集)
|
||
- 输 入: pck_name: 包名称(SYBASE该参数为NULL)
|
||
proc_name: 存储过程名称
|
||
parm_vec: 存储过程参数Vector(1~n个),对于ORACLE返回游标参数无需指定
|
||
参数以vector<string>形式传入,即不论类型全部为string
|
||
日期型参数以YYYY-MM-DD HH:MM:SS形式传入
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteProcedure ( char *pck_name,
|
||
char *proc_name,
|
||
vector<string> parm_vec,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 返回执行存储过程(无返回结果集)的实际PLSQL语句
|
||
需配合ExecuteProcedure执行,只有ExecuteProcedure执行成功后调用该函数才有意义
|
||
- 输 入: pck_name: 包名称(SYBASE该参数为NULL)
|
||
proc_name: 存储过程名称
|
||
parm_vec: 存储过程参数Vector(1~n个),对于ORACLE返回游标参数无需指定
|
||
参数以vector<string>形式传入,即不论类型全部为string
|
||
日期型参数以YYYY-MM-DD HH:MM:SS形式传入
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: SQL语句: 由pck_name、proc_name、parm_vec构造SQL语句
|
||
"" : 返回为""表示错误
|
||
----------------------------------------------------------------------------------*/
|
||
string GetProcedureSQL ( char *pck_name,
|
||
char *proc_name,
|
||
vector<string> parm_vec,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 判断指定的表(table)是否存在
|
||
- 输 入: table_name: 表名称
|
||
- 返 回: ture: 表存在
|
||
false: 表不存在
|
||
----------------------------------------------------------------------------------*/
|
||
bool TableExist ( char *table_name );
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 将传入字符串转换为大写
|
||
- 输 入: str: 传入字符串
|
||
- 输 出: str: 传出字符串(大写)
|
||
- 返 回: 无
|
||
----------------------------------------------------------------------------------*/
|
||
void UpperString (char * & str);
|
||
|
||
|
||
|
||
/*================================================================================*/
|
||
/* */
|
||
/* LOB(Large OBject)支持 */
|
||
/* */
|
||
/* 例子中所使用表为MY_TEST_LOB */
|
||
/* 【ORACLE】DDL语句为: */
|
||
/* CREATE TABLE MY_TEST_LOB( */
|
||
/* ID NUMBER(10) NOT NULL, */
|
||
/* CLOB_CONTENT CLOB, */
|
||
/* BLOB_CONTENT BLOB, */
|
||
/* NAME VARCHAR2(32), */
|
||
/* KEYID_V CHAR(14), */
|
||
/* APPKEYID_V CHAR(24), */
|
||
/* APPID_V CHAR(20), */
|
||
/* DATE_V DATE, */
|
||
/* FLOAT_V NUMBER(22, 6), */
|
||
/* CONSTRAINT PK_TEST_LOB PRIMARY KEY(ID)) */
|
||
/* */
|
||
/* 【SYBASE】DDL语句为: */
|
||
/* CREATE TABLE MY_LOB_TEST( */
|
||
/* ID INT, */
|
||
/* CLOB_CONTENT TEXT NULL, */
|
||
/* BLOB_CONTENT IMAGE NULL, */
|
||
/* NAME VARCHAR(32) NULL, */
|
||
/* KEYID_V CHAR(14) NULL, */
|
||
/* APPKEYID_V CHAR(24) NULL, */
|
||
/* APPID_V CHAR(20) NULL, */
|
||
/* DATE_V DATETIME NULL, */
|
||
/* FLOAT_V REAL NULL, */
|
||
/* CONSTRAINT PK_TEST_LOB PRIMARY KEY(ID)) */
|
||
/* */
|
||
/* */
|
||
/*================================================================================*/
|
||
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行包含LOB数据的INSERT命令,并提交
|
||
- 输 入: insert_string: INSERT(LOB)命令
|
||
select_string: 附加的SELECT FOR UPDATE(只需要写LOB域)命令
|
||
lob_vec: LOB域的Vector
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
|
||
- 说 明:
|
||
1、insert_string参数举例
|
||
【ORACLE】"insert into my_test_lob(id,clob_content,blob_content)
|
||
values(1,empty_clob(),empty_blob())"
|
||
【SYBASE】"insert into my_test_lob(id,clob_content,blob_content)
|
||
values(1,'','')"
|
||
如果需要在select语句中更新LOB域,注意不要在Insert语句中将LOB域置为空(NULL)
|
||
对于ORACLE使用empty_clob()、empty_blob()插入EMPTY
|
||
对于SYBASE使用''插入EMPTY
|
||
2、select_string参数举例
|
||
【ORACLE】"select clob_content,blob_content from my_test_lob where id = 1 for update"
|
||
【SYBASE】"select clob_content,blob_content from my_test_lob where id = 1"
|
||
注意:若where子句不对应insert语句中的主键,则更新结果不可预见
|
||
对于ORACLE “for update”关键词是必须的
|
||
3、lob_vec包含LOB实际数据,lob_vec.size()必须与select_string中LOB域的个数一致
|
||
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteInsertCommandWithLOB( const char *insert_string,
|
||
const char *select_string,
|
||
const vector<TLOBContent> &lob_vec,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行包含LOB数据的UPDATE命令,并提交
|
||
- 输 入: update_string: UPDATE(LOB)命令
|
||
select_string: 附加的SELECT FOR UPDATE(只需要写LOB域)命令
|
||
lob_vec: LOB域的Vector
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
- 说 明:
|
||
1、update_string参数举例
|
||
【ORACLE】"update my_test_lob set blob_content = empty_blob() where id = 1"
|
||
【SYBASE】"update my_test_lob set blob_content = '' where id = 1"
|
||
如果需要在select语句中更新LOB域,注意不要在Update语句中将LOB域置为空(NULL)
|
||
对于ORACLE使用empty_clob()、empty_blob()插入EMPTY
|
||
对于SYBASE使用''插入EMPTY
|
||
2、select_string参数举例
|
||
【ORACLE】"select clob_content,blob_content from my_test_lob where id = 1 for update"
|
||
【SYBASE】"select clob_content,blob_content from my_test_lob where id = 1"
|
||
注意:若where子句不对应update语句中的主键,则更新结果不可预见
|
||
2、lob_vec包含LOB实际数据,lob_vec.size()必须与select_string中LOB域的个数一致
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteUpdateCommandWithLOB( const char *update_string,
|
||
const char *select_string,
|
||
const vector<TLOBContent> &lob_vec,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取SQL查询返回结果集(包含LOB类型数据)
|
||
- 输 入: query_string: SQL查询命令
|
||
max_result: 结果集最大行数,GET_ALL_RESULT表示取所有行
|
||
user_type_map: 用户指定返回数据类型,MAP类型
|
||
注意LOB域无法指定数据类型
|
||
- 输 出: result_link: 结果集指针
|
||
result_indicator 是否为空指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
- 说 明:
|
||
1、由于SYBASE数据库要求检索的LOB域都必须放在BIND域(普通域)的后面
|
||
因此统一要求query_string中的所有LOB域都在普通域之后
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryResultWithLOB( const char *query_string,
|
||
int max_result,
|
||
UserSpecTypeMap user_type_map,
|
||
char *&result_link,
|
||
signed short *&result_indicator,
|
||
TLOBResultHead *&result_head_ptr,
|
||
TLOBFieldInfo *&field_info_ptr,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取结果集的HEAD,FIELD,DATA指针(包含LOB类型数据)
|
||
- 输 入: result_link: 结果集指针
|
||
- 输 出: result_head_ptr: HEAD指针,对应TLOBResultHead结构
|
||
field_info_ptr: FIELD指针,对应TLOBFieldInfo结构
|
||
data_ptr: DATA指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryHeadWithLOB( char *result_link,
|
||
TLOBResultHead *&result_head_ptr,
|
||
TLOBFieldInfo *&field_info_ptr,
|
||
char *&data_ptr,
|
||
vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取SQL查询返回结果集(不包含LOB类型数据)形成指定ASCII文件
|
||
- 输 入: query_string: SQL查询命令
|
||
file_name: 输出文件名称(含绝对路径)
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryResultToFile(const char *query_string,
|
||
const char *file_name,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
};
|
||
#else
|
||
class DBACCESS_API CDbAccess
|
||
{
|
||
public:
|
||
//构造函数auto_logoff == true 或无参数时,不需要显示调用Logoff,会在析构函数中调用
|
||
//反之,程序需要显示调用Logoff注销数据库登录,否则连接没有释放
|
||
//需指定文件库的路径 如:/home/d5000/kf/sqlite-autoconf-3070900/test.db
|
||
CDbAccess(bool auto_logoff = true);
|
||
|
||
//析构函数
|
||
~CDbAccess();
|
||
|
||
//为复制功能提供设置主机名的接口
|
||
int SetHostName(char* host_name);
|
||
private:
|
||
int m_Status;
|
||
int m_LoginMode;
|
||
int m_LogoffFlag;
|
||
|
||
private:
|
||
SqliteServerClient *m_sqlite_server_client;
|
||
|
||
private:
|
||
|
||
TKeyidType* ConvertKeyidToStruct(char *keyid);
|
||
|
||
TAppKeyidType* ConvertAppKeyidToStruct(char *keyid);
|
||
|
||
TAppidType* ConvertAppidToStruct(char *keyid);
|
||
|
||
// int ConvertSQLDateToTimet(char* date_ptr,time_t *osdate);
|
||
public:
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 数据库注册
|
||
- 输 入: user_name: 用户名称
|
||
passwd: 口令
|
||
server: 服务名
|
||
mode: 模式 LOGIN_DEFAULT_MODE 普通模式
|
||
LOGIN_THREADED_MODE 多线程模式
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int Login( char *user_name,
|
||
char *passwd,
|
||
char *server,
|
||
unsigned int mode,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 数据库注册
|
||
- 输 入: user_name: 用户名称
|
||
passwd: 口令
|
||
server: 服务名
|
||
mode: 模式 LOGIN_DEFAULT_MODE 普通模式
|
||
LOGIN_THREADED_MODE 多线程模式
|
||
host_name: 主机名
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int Login( char *user_name,
|
||
char *passwd,
|
||
char *server,
|
||
unsigned int mode,
|
||
char * host_name,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 数据库注销
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int Logoff(vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取连接状态
|
||
- 输 入: 无
|
||
- 输 出: 无
|
||
- 返 回: DB_STATUS_CONNECT: 保持连接
|
||
DB_STATUS_DISCONNECT: 失去连接
|
||
----------------------------------------------------------------------------------*/
|
||
int GetConnectStatus();
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 设置连接状态
|
||
- 输 入: status: 设置连接状态
|
||
- 输 出: 无
|
||
- 返 回: DB_SUCCESS: 成功
|
||
----------------------------------------------------------------------------------*/
|
||
int SetConnectStatus(int status);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 开始事务
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int BeginTransaction(vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 提交事务
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int CommitTransaction(vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 回滚事务
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int RollbackTransaction(vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取SQL查询返回结果集(不包含LOB类型数据)
|
||
- 输 入: query_string: SQL查询命令
|
||
max_result: 结果集最大行数,GET_ALL_RESULT表示取所有行
|
||
user_type_map: 用户指定返回数据类型,MAP类型
|
||
- 输 出: result_link: 结果集指针
|
||
result_indicator 是否为空指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
|
||
int GetQueryResult(char *query_string,
|
||
int max_result,
|
||
UserSpecTypeMap user_type_map,
|
||
char *&result_link,
|
||
signed short *&result_indicator,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取结果集的HEAD,FIELD,DATA指针
|
||
- 输 入: result_link: 结果集指针
|
||
- 输 出: result_head_ptr: HEAD指针
|
||
field_info_ptr: FIELD指针
|
||
data_ptr: DATA指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryHead(char *result_link,
|
||
TResultHead *&result_head_ptr,
|
||
TFieldInfo *&field_info_ptr,
|
||
char *&data_ptr,
|
||
vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行SQL命令,并提交
|
||
- 输 入: cmd_string: SQL命令
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteCommandWithCommit(char *cmd_string, vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 利用绑定变量方式执行SQL命令,并提交
|
||
- 输入参数 : sql_str 需要提交SQL语句
|
||
- 输出参数 : out_db_error 错误信息
|
||
- 输入参数 : rep_flag 是否复制
|
||
- 返回值 : TRUE 执行成功
|
||
- FALSE 执行失败
|
||
----------------------------------------------------------------------------------*/
|
||
|
||
int BindExecuteCommandWithCommit(char *cmd_string, SEQDCIBindParaStru &seq_bind_para, void *data_buffer,
|
||
unsigned short * null_flag_buffer, unsigned int row_num,
|
||
vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行SQL命令,不提交
|
||
- 输 入: cmd_string: SQL命令
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteCommandWithoutCommit(char *cmd_string,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取存储过程查询返回结果集
|
||
- 输 入: pck_name: 包名称(SYBASE该参数为NULL)
|
||
proc_name: 存储过程名称
|
||
parm_vec: 存储过程参数Vector(1~n个),对于ORACLE返回游标参数无需指定
|
||
参数以vector<string>形式传入,即不论类型全部为string
|
||
日期型参数以YYYY-MM-DD HH:MM:SS形式传入
|
||
max_result: 结果集最大行数,GET_ALL_RESULT表示取所有行
|
||
user_type_map: 用户指定返回数据类型,MAP类型
|
||
- 输 出: result_link: 结果集指针
|
||
result_indicator 是否为空指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetProcedureResult( char *pck_name,
|
||
char *proc_name,
|
||
vector<string> parm_vec,
|
||
int max_result,
|
||
UserSpecTypeMap user_type_map,
|
||
char *&result_link,
|
||
signed short *&result_indicator,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行存储过程(无返回结果集)
|
||
- 输 入: pck_name: 包名称(SYBASE该参数为NULL)
|
||
proc_name: 存储过程名称
|
||
parm_vec: 存储过程参数Vector(1~n个),对于ORACLE返回游标参数无需指定
|
||
参数以vector<string>形式传入,即不论类型全部为string
|
||
日期型参数以YYYY-MM-DD HH:MM:SS形式传入
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteProcedure ( char *pck_name,
|
||
char *proc_name,
|
||
vector<string> parm_vec,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 返回执行存储过程(无返回结果集)的实际PLSQL语句
|
||
需配合ExecuteProcedure执行,只有ExecuteProcedure执行成功后调用该函数才有意义
|
||
- 输 入: pck_name: 包名称(SYBASE该参数为NULL)
|
||
proc_name: 存储过程名称
|
||
parm_vec: 存储过程参数Vector(1~n个),对于ORACLE返回游标参数无需指定
|
||
参数以vector<string>形式传入,即不论类型全部为string
|
||
日期型参数以YYYY-MM-DD HH:MM:SS形式传入
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: SQL语句: 由pck_name、proc_name、parm_vec构造SQL语句
|
||
"" : 返回为""表示错误
|
||
----------------------------------------------------------------------------------*/
|
||
string GetProcedureSQL ( char *pck_name,
|
||
char *proc_name,
|
||
vector<string> parm_vec,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 判断指定的表(table)是否存在
|
||
- 输 入: table_name: 表名称
|
||
- 返 回: ture: 表存在
|
||
false: 表不存在
|
||
----------------------------------------------------------------------------------*/
|
||
bool TableExist( char *table_name );
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 将传入字符串转换为大写
|
||
- 输 入: str: 传入字符串
|
||
- 输 出: str: 传出字符串(大写)
|
||
- 返 回: 无
|
||
----------------------------------------------------------------------------------*/
|
||
void UpperString(char * & str);
|
||
|
||
/*================================================================================*/
|
||
/* */
|
||
/* LOB(Large OBject)支持 */
|
||
/* */
|
||
/* 例子中所使用表为MY_TEST_LOB */
|
||
/* 【ORACLE】DDL语句为: */
|
||
/* CREATE TABLE MY_TEST_LOB( */
|
||
/* ID NUMBER(10) NOT NULL, */
|
||
/* CLOB_CONTENT CLOB, */
|
||
/* BLOB_CONTENT BLOB, */
|
||
/* NAME VARCHAR2(32), */
|
||
/* KEYID_V CHAR(14), */
|
||
/* APPKEYID_V CHAR(24), */
|
||
/* APPID_V CHAR(20), */
|
||
/* DATE_V DATE, */
|
||
/* FLOAT_V NUMBER(22, 6), */
|
||
/* CONSTRAINT PK_TEST_LOB PRIMARY KEY(ID)) */
|
||
/* */
|
||
/* 【SYBASE】DDL语句为: */
|
||
/* CREATE TABLE MY_LOB_TEST( */
|
||
/* ID INT, */
|
||
/* CLOB_CONTENT TEXT NULL, */
|
||
/* BLOB_CONTENT IMAGE NULL, */
|
||
/* NAME VARCHAR(32) NULL, */
|
||
/* KEYID_V CHAR(14) NULL, */
|
||
/* APPKEYID_V CHAR(24) NULL, */
|
||
/* APPID_V CHAR(20) NULL, */
|
||
/* DATE_V DATETIME NULL, */
|
||
/* FLOAT_V REAL NULL, */
|
||
/* CONSTRAINT PK_TEST_LOB PRIMARY KEY(ID)) */
|
||
/* */
|
||
/* */
|
||
/*================================================================================*/
|
||
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行包含LOB数据的INSERT命令,并提交
|
||
- 输 入: insert_string: INSERT(LOB)命令
|
||
select_string: 附加的SELECT FOR UPDATE(只需要写LOB域)命令
|
||
lob_vec: LOB域的Vector
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
|
||
- 说 明:
|
||
1、insert_string参数举例
|
||
【ORACLE】"insert into my_test_lob(id,clob_content,blob_content)
|
||
values(1,empty_clob(),empty_blob())"
|
||
【SYBASE】"insert into my_test_lob(id,clob_content,blob_content)
|
||
values(1,'','')"
|
||
如果需要在select语句中更新LOB域,注意不要在Insert语句中将LOB域置为空(NULL)
|
||
对于ORACLE使用empty_clob()、empty_blob()插入EMPTY
|
||
对于SYBASE使用''插入EMPTY
|
||
2、select_string参数举例
|
||
【ORACLE】"select clob_content,blob_content from my_test_lob where id = 1 for update"
|
||
【SYBASE】"select clob_content,blob_content from my_test_lob where id = 1"
|
||
注意:若where子句不对应insert语句中的主键,则更新结果不可预见
|
||
对于ORACLE “for update”关键词是必须的
|
||
3、lob_vec包含LOB实际数据,lob_vec.size()必须与select_string中LOB域的个数一致
|
||
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteInsertCommandWithLOB( const char *insert_string,
|
||
const char *select_string,
|
||
const vector<TLOBContent> &lob_vec,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行包含LOB数据的UPDATE命令,并提交
|
||
- 输 入: update_string: UPDATE(LOB)命令
|
||
select_string: 附加的SELECT FOR UPDATE(只需要写LOB域)命令
|
||
lob_vec: LOB域的Vector
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
- 说 明:
|
||
1、update_string参数举例
|
||
【ORACLE】"update my_test_lob set blob_content = empty_blob() where id = 1"
|
||
【SYBASE】"update my_test_lob set blob_content = '' where id = 1"
|
||
如果需要在select语句中更新LOB域,注意不要在Update语句中将LOB域置为空(NULL)
|
||
对于ORACLE使用empty_clob()、empty_blob()插入EMPTY
|
||
对于SYBASE使用''插入EMPTY
|
||
2、select_string参数举例
|
||
【ORACLE】"select clob_content,blob_content from my_test_lob where id = 1 for update"
|
||
【SYBASE】"select clob_content,blob_content from my_test_lob where id = 1"
|
||
注意:若where子句不对应update语句中的主键,则更新结果不可预见
|
||
2、lob_vec包含LOB实际数据,lob_vec.size()必须与select_string中LOB域的个数一致
|
||
----------------------------------------------------------------------------------*/
|
||
int ExecuteUpdateCommandWithLOB( const char *update_string,
|
||
const char *select_string,
|
||
const vector<TLOBContent> &lob_vec,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取SQL查询返回结果集(包含LOB类型数据)
|
||
- 输 入: query_string: SQL查询命令
|
||
max_result: 结果集最大行数,GET_ALL_RESULT表示取所有行
|
||
user_type_map: 用户指定返回数据类型,MAP类型
|
||
注意LOB域无法指定数据类型
|
||
- 输 出: result_link: 结果集指针
|
||
result_indicator 是否为空指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
- 说 明:
|
||
1、由于SYBASE数据库要求检索的LOB域都必须放在BIND域(普通域)的后面
|
||
因此统一要求query_string中的所有LOB域都在普通域之后
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryResultWithLOB( const char *query_string,
|
||
int max_result,
|
||
UserSpecTypeMap user_type_map,
|
||
char *&result_link,
|
||
signed short *&result_indicator,
|
||
TLOBResultHead *&result_head_ptr,
|
||
TLOBFieldInfo *&field_info_ptr,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取结果集的HEAD,FIELD,DATA指针(包含LOB类型数据)
|
||
- 输 入: result_link: 结果集指针
|
||
- 输 出: result_head_ptr: HEAD指针,对应TLOBResultHead结构
|
||
field_info_ptr: FIELD指针,对应TLOBFieldInfo结构
|
||
data_ptr: DATA指针
|
||
err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryHeadWithLOB( char *result_link,
|
||
TLOBResultHead *&result_head_ptr,
|
||
TLOBFieldInfo *&field_info_ptr,
|
||
char *&data_ptr,
|
||
vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取SQL查询返回结果集(不包含LOB类型数据)形成指定ASCII文件
|
||
- 输 入: query_string: SQL查询命令
|
||
file_name: 输出文件名称(含绝对路径)
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int GetQueryResultToFile(const char *query_string,
|
||
const char *file_name,
|
||
vector<TErrorMsg> &err_vec
|
||
);
|
||
};
|
||
#endif
|
||
|
||
#endif
|
||
|