Files
autobuild-tools/code/sys_nicmonitor/include/db_com/sqlite_access.h
Wei, Jing 5c462e7adb [Issue #2 ] 南瑞郭海龙交接最终版2.0
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>
2020-10-22 19:15:38 +08:00

376 lines
13 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*************************************************
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
);
/*---------------------------------------------------------------------------------
- 功能描述: 取结果集的HEADFIELDDATA指针
- 输 入: 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
);
/*---------------------------------------------------------------------------------
- 功能描述: 取结果集的HEADFIELDDATA指针(包含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_ */