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

📄 ocilob.h

📁 一个通用的oracle OCI开发程序包
💻 H
字号:
#ifndef _COCILob
#define _COCILob

#ifndef _COCISession
#include "ocisess.h"
#endif

#ifndef _COCIBase
#include "ocibase.h"
#endif

#ifndef OCI_ORACLE
#include "oci.h"
#endif

#ifndef _STRING_
#include <string.h>
#endif

class COCISession;
class COCIFile;
class COCIBinary;

class COCILob : public COCIBase
{
protected:
  COCILob(const COCISession& Sess, ub4 type = OCI_DTYPE_LOB);
  COCILob(const COCISession& Sess, dvoid* instance);
  COCILob(const COCILob& src);
  ~COCILob();

public:
  void  append(const COCILob& src);
  void  assign(const COCILob& src);
  void  copy(const COCILob& src, ub4 amount, ub4 dst_offset = 1, ub4 src_offset = 1);
  void  set_buffering(bool buffer = true);
  ub4   erase(ub4 amount, ub4 offset);
  void  flush_buffer(ub4 flag = OCI_LOB_BUFFER_FREE);
  ub4   get_length(void);
  bool  is_equal(const COCILob& src);
  void  load_from_file(const COCIFile& src, ub4 amount, ub4 dst_offset = 1, ub4 src_offset = 1);
  bool  is_init(void);
  ub4   read(ub4* bufp, ub4 amount);
  void  trim(ub4 newlen);
  ub4   write(ub4* bufp, ub4 amount);


  OCILobLocator*& get_locator() {return m_pLobLocator;}
  ub2  get_data_type(){return m_DataType;}
  void make_empty(void);

  void   set_read_offset(ub4 read_offset){m_read_offset = read_offset;}
  ub4    get_read_offset(void){return m_read_offset;}

  void   set_write_offset(ub4 write_offset){m_write_offset = write_offset;}
  ub4    get_write_offset(void){return m_write_offset;}

  void   set_callback_ctx(dvoid* ctxp){m_ctxp = ctxp;}
  dvoid* get_callback_ctx(void){return m_ctxp;}

  void   set_read_callback_function(OCICallbackLobRead cbfpRead){m_cbfpRead = cbfpRead;}
  OCICallbackLobRead get_read_callback_function(void){return m_cbfpRead;}

  void   set_write_callback_function(OCICallbackLobWrite cbfpWrite){m_cbfpWrite = cbfpWrite;}
  OCICallbackLobWrite get_write_callback_function(void){return m_cbfpWrite;}

  void   set_csid(ub2 csid){m_csid = csid;}
  ub2    get_csid(void){return m_csid;}

  void   set_csfrm(ub1 csfrm){m_csfrm = csfrm;}
  ub2    get_csfrm(void){return m_csfrm;}

  // Write operator
  friend COCILob& operator << (COCILob& lob, COCIBinary& data);

  // Read operator
  friend COCILob& operator >> (COCILob& lob, COCIBinary& data);

  COCILob& operator = (const COCILob& src);

protected:
  const COCISession& m_Session;
  OCILobLocator* m_pLobLocator;
  ub2 m_DataType;

private:
  ub4 m_read_offset;
  ub4 m_write_offset;
  dvoid* m_ctxp;
  OCICallbackLobRead m_cbfpRead; 
  OCICallbackLobWrite m_cbfpWrite;
  ub2 m_csid;
  ub1 m_csfrm;
  ub4 m_type;

};


class COCICLob : public COCILob
{
public:
  COCICLob(const COCISession& Sess);
  COCICLob(const COCISession& Sess, dvoid* instance);
  COCICLob(const COCICLob& src);
  ~COCICLob();
  COCICLob& operator = (const COCICLob& src);

  // Write operator
  friend COCICLob& operator << (COCICLob& lob, char* data);

  // Read operator
  friend COCICLob& operator >> (COCICLob& lob, char* data);


  ub1 get_char_set_form(void);
  ub2 get_char_set_id(void);
};

class COCIBLob : public COCILob
{
public:
  COCIBLob(const COCISession& Sess);
  COCIBLob(const COCISession& Sess, dvoid* instance);
  COCIBLob(const COCIBLob& src);
  ~COCIBLob();
  COCIBLob& operator = (const COCIBLob& src);
};

class COCIFile : public COCILob
{
protected:
  COCIFile(const COCISession& Sess);
  COCIFile(const COCISession& Sess, dvoid* instance);
  COCIFile(const COCIFile& src);
  ~COCIFile();
  COCIFile& operator = (const COCIFile& src);

public:
  void  close(void);
  void  close_all(void);
  bool  exists(void);
  void  get_name(void);
  bool  is_open(void);
  void  open(ub1 mode = OCI_FILE_READONLY);
  void  set_name(char* dir_alias, char* filename);

  void set_dir_alias(char* dir_alias){strcpy((char*)m_dir_alias, (char*)dir_alias);}
  char* get_dir_alias(void){return m_dir_alias;}

  void set_filename(char* filename){strcpy((char*)m_filename, (char*)filename);}
  char* get_filename(void){return m_filename;}

private:
  char m_dir_alias[30];
  char m_filename[30];
};

class COCICFile : public COCIFile
{
public:
  COCICFile(const COCISession& Sess);
  COCICFile(const COCISession& Sess, dvoid* instance);
  COCICFile(const COCICFile& src);
  ~COCICFile();
  COCICFile& operator = (const COCICFile& src);

};

class COCIBFile : public COCIFile
{
public:
  COCIBFile(const COCISession& Sess);
  COCIBFile(const COCISession& Sess, dvoid* instance);
  COCIBFile(const COCIBFile& src);
  ~COCIBFile();
  COCIBFile& operator = (const COCIBFile& src);

};



#endif

⌨️ 快捷键说明

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