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>
376 lines
13 KiB
C++
376 lines
13 KiB
C++
/*************************************************
|
||
Copyright (C), 1988-1999, Nari Tech. Co., Ltd.
|
||
File name: sqlite_access_interface.h
|
||
Author: LH
|
||
Version: 1.0
|
||
Date: 2012.6.4
|
||
Description: 访问sqlite库封装接口
|
||
Function List:
|
||
|
||
Datetime Action Author Modify
|
||
-------------------------------------------------------------------
|
||
2012.6.4 Creation LH
|
||
|
||
*************************************************/
|
||
#ifndef SQLITE_ACCESS_H_
|
||
#define SQLITE_ACCESS_H_
|
||
|
||
#include "sqlite3.h"
|
||
#include <iostream>
|
||
#include <vector>
|
||
#include <string>
|
||
#include <map>
|
||
|
||
using namespace std;
|
||
|
||
#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 TResultHead
|
||
{
|
||
int field_num;
|
||
int field_size;
|
||
int data_num;
|
||
int data_size;
|
||
int record_length;
|
||
int reach_max;
|
||
};
|
||
|
||
struct TFieldInfo
|
||
{
|
||
short field_type;
|
||
short field_length;
|
||
};
|
||
|
||
struct TFieldAttr {
|
||
char colName[64];
|
||
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));
|
||
}
|
||
};
|
||
|
||
//LOB使用的ResultHead
|
||
struct 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 TLOBFieldInfo
|
||
{
|
||
short field_type;
|
||
vector<int> field_length_vec; //field_length_vec.size等于TLOBResultHead中的data_num //如果data_num == 0, 则field_length_vec.size = 1
|
||
};
|
||
|
||
//错误信息结构
|
||
struct TErrorMsg
|
||
{
|
||
int err_no; //DBAccess错误号
|
||
string dbaccess_err; //DBAccess错误信息
|
||
string db_err; //数据库错误信息
|
||
};
|
||
|
||
// Define the KeyID_Type's Description
|
||
struct TKeyidType
|
||
{
|
||
int record_id;
|
||
short column_id;
|
||
};
|
||
|
||
struct TAppKeyidType
|
||
{
|
||
long key_id;
|
||
int app_id;
|
||
};
|
||
|
||
// Define the AppID_Type's Description
|
||
struct TAppidType
|
||
{
|
||
int app_id;
|
||
int record_id;
|
||
};
|
||
|
||
// LOB内容结构
|
||
struct TLOBContent
|
||
{
|
||
unsigned char *lob_content;
|
||
int lob_content_size;
|
||
};
|
||
|
||
typedef map<int,int> UserSpecTypeMap;
|
||
|
||
class SqliteAccess
|
||
{
|
||
public:
|
||
//构造函数auto_logoff == true 或无参数时,不需要显示调用Logoff,会在析构函数中调用
|
||
//反之,程序需要显示调用Logoff注销数据库登录,否则连接没有释放
|
||
SqliteAccess(bool auto_logoff = true);
|
||
~SqliteAccess();
|
||
|
||
private:
|
||
void stripWhiteSpace(string &str);
|
||
|
||
int PrintError(string &err_string);
|
||
|
||
int PrepareOneSentence(sqlite3_stmt* &stmt, const char *query_string, vector<TErrorMsg> &err_vec);
|
||
|
||
int FreeOneStatement(sqlite3_stmt* &stmt, vector<TErrorMsg> &err_vec);
|
||
|
||
int ExecuteOneSelectSentence(sqlite3_stmt* &stmt, bool &is_no_record, vector<TErrorMsg> &err_vec);
|
||
|
||
int ExecuteOneModifySentence(sqlite3_stmt* &stmt, vector<TErrorMsg> &err_vec);
|
||
|
||
void GetSelectColNum(sqlite3_stmt* &stmt, int &num_cols);
|
||
|
||
int GetSingleColInfo(sqlite3_stmt *stmt, int col_num, TFieldAttr &field_attr, string &column_decltype, string &field_precision, string &field_scale, string &field_len, vector<TErrorMsg> &err_vec);
|
||
|
||
TKeyidType* ConvertKeyidToStruct(char *keyid);
|
||
|
||
TAppKeyidType* ConvertAppKeyidToStruct(char *keyid);
|
||
|
||
TAppidType* ConvertAppidToStruct(char *keyid);
|
||
|
||
int ConvertSQLDateToTimet(char* date_ptr,time_t *osdate);
|
||
public:
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 数据库注册
|
||
- 输 入: server: 服务名
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int Login(char *server, vector<TErrorMsg> &err_vec);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 数据库注销
|
||
- 输 入: 无
|
||
- 输 出: err_vec: 错误返回结构Vector
|
||
- 返 回: DB_SUCCESS: 成功
|
||
DB_FAIL: 失败
|
||
----------------------------------------------------------------------------------*/
|
||
int Logoff(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
|
||
result_link_length 结果集内存块长度
|
||
result_indicator_length 结果集内存块长度
|
||
- 返 回: 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,
|
||
int &result_link_length,
|
||
int &result_indicator_length
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取结果集的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);
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行包含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);
|
||
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取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,
|
||
int &result_link_length,
|
||
int &result_indicator_length
|
||
);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 取结果集的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);
|
||
|
||
/*---------------------------------------------------------------------------------
|
||
- 功能描述: 执行包含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
|
||
);
|
||
private:
|
||
sqlite3 *m_db_handle;
|
||
|
||
private:
|
||
int m_Status;
|
||
int m_LoginMode;
|
||
int m_LogoffFlag;
|
||
};
|
||
|
||
|
||
#endif /* SQLITE_ACCESS_INTERFACE_H_ */
|