📄 ocidbclass.h
字号:
//---------------------------------------------------------------------------
#ifndef OciDbClassH
#define OciDbClassH
//---------------------------------------------------------------------------
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <io.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <oci.h>
#include <sys/timeb.h>
#include <sys/stat.h>
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#include <errno.h>
#include <signal.h>
#include "malloc.h"
#include "oci.h"
#define HIM_GETCFG_ERR -5
#define MAXBUFLEN 1024*100
typedef struct
{
char FieldName[40];
ub2 fieldtype;
ub2 fieldlen;
} FIELDSTRUCT;
typedef struct
{
char TableName[40];
int FieldNum;
FIELDSTRUCT FieldInfo[250];
} TABLESTRUCT;
typedef struct
{
int TableNum;
TABLESTRUCT TableInfo[40];
} DBSTRUCT;
typedef struct tagDATABASEHANDLE
{
int id;
OCIEnv * envhp;
OCIError * errhp;
OCISvcCtx * svchp;
OCIServer * srvhp;
OCISession * authp;
DBSTRUCT wy_table_info;
}DATABASEHANDLE;
struct G_ConnPool
{
CRITICAL_SECTION MutexLock;
int ConnNum;
char *Stat; //0 : 空闲
DATABASEHANDLE *DBHandle;
};
typedef struct
{
OCIStmt *stmtp;
int position;
char fieldname[30];
OCIBind * bndhp;
char * value;
int length;
sb2 indicator;
int flag;
ub2 type;
OCILobLocator * blob;
} WY_BINDINFO;
typedef struct
{
char FieldName[30];
OCIDefine * defhp;
char * Value;
int Size;
sb2 indicator;
ub2 Type;
OCILobLocator * blob;
} WY_DEFINEINFO;
typedef struct
{
char * CSname;
char * CFilename;
OCIBind * CSbndhp;
Variant CSvalue;
char * value;
int size;
bool sybz;
ub2 CStype;
OCILobLocator * CSblob;
} IN_PARAM;
typedef struct
{
int inputnums;
WY_BINDINFO * inputinfo;
int outputnums;
WY_DEFINEINFO * outputinfo;
} SELECTINFO;
typedef struct tagOCI_CURSOR
{
DATABASEHANDLE DBHandle;
char sTableName[50]; //表名称
char *sSQLStmt; //SQL查询语句
OCIStmt *selhp;
SELECTINFO selinfo;
long TotalLength; //字段值总长度
long iResult; //查询记录数
} OCI_CURSOR;
typedef struct tagHIMOCICOMMON
{
OCIEnv *EnvHp; //OCI环境句柄
OCIError *ErrHp; //OCI错误句柄
OCISvcCtx *SvcHp; //OCI连文句柄
OCIServer *SvrHp; //OCI服务句柄
OCISession *AutHp; //OCI会话句柄
}HIMOCICOMMON , *PHIMOCICOMMON; //OCI全局公用变量结构
struct HIMTSTRCUT
{
int FieldType ;
char *FieldName ;
char *FieldContent ;
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//数据库操作类
class OCIDatabase
{
private:
char DBErrMsg[5000];
char logmsg[1024];
char tmpname[300];
char tmpbuf[500];
char Ora_Service[300],UserName[300],Password[300];
int Connectcount;
G_ConnPool sG_ConnPool;
public:
OCIDatabase();
~OCIDatabase();
int ConnectDataBase(DATABASEHANDLE & DBHandle);
int DisConnectDataBase(DATABASEHANDLE & DBHandle);
int TestOraAlive(DATABASEHANDLE & DBHandle);
int pDisConnectDataBase(DATABASEHANDLE & DBHandle);
int pConnectDataBase(DATABASEHANDLE & DBHandle,char * ErrMsg );
int InitG_ConnPool(char Service[300],char User[300],char Pass[300],int count );
int OCI_ExecuteStmt(DATABASEHANDLE & DBHandle,char * stmtstr, char * ErrMsg );
};
class TOCIQuery
{
private :
char value[500000];
char DBErrMsg[5000];
char logmsg[1024];
char tmpname[300];
char tmpbuf[500];
HIMTSTRCUT FieldStruct[100];
IN_PARAM PARAStruct[100];
char SQLStr[1024*4];
int csCount,RowCount,status;
ub2 fieldtype;
ub4 fieldlen,tmplen,parmcnt;
unsigned long offset;
SELECTINFO * selectinfo;
OCIStmt * selecthp,*stmthp1,*binstmthp;
OCIEnv * envhp;
OCIError * errhp;
OCISvcCtx * svchp;
OCIServer * srvhp;
OCISession * authp;
OCIParam *parmdp;
void *sel_cursor;
int _OCIErrorGet( DATABASEHANDLE & DBHandle,char * _ErrMsg );
int SelectPrepare();
int OCI_CloseCursor(void * & Handle);
int FreeSelectInfo( SELECTINFO * selectinfo );
int FreeSelectout( SELECTINFO * selectinfo );
int FreeSel_cursor( OCI_CURSOR * cursor );
void stream_write_lob( OCILobLocator *lob2, void* pData, int nLen);
void checkerr(OCIError *errhp,sword status);
int File_write_lob( OCILobLocator *lob2, char *FileName);
public :
DATABASEHANDLE DBHandle;
ub4 prefetch;
int FieldCount;
char FSQLType[100];
bool Eof;
TOCIQuery();
~TOCIQuery();
int AddSQL(char sqlstmt[1024*4]);
int BINParamValue();
int SetParamValue(char * ParamName,Variant PutValue);
int SetBLOBParamValueFromstream(char * ParamName,TMemoryStream *stream);
int SetBLOBParamValueFromFile(char * ParamName,char *FileName);
char* GetFieldValueByName(char FieldName[200]);
char* GetFieldValueByIndex(int idx);
char* GetFieldName(int idx);
WY_DEFINEINFO *Fields(int idx);
WY_DEFINEINFO *FieldByName(char FieldName[200]);
char GetRowid();
int GetFieldType(int idx);
int GetBLOBFieldByNameToFile(char FieldName[200],char FileName[600]);
int GetBLOBFieldByIndexToFile(int idx,char FileName[600]);
int GetBLOBFieldByNameToSteam(char FieldName[200],Classes::TStream* Stream);
int GetBLOBFieldByIndexToSteam(int idx,Classes::TStream* Stream);
int ExecSQL();
int Next();
int First();
int RecordCount();
int Last();
int Prior();
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -