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

📄 ociobj.h

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

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

#ifndef _COCITable
#include "ocitab.h"
#endif

#ifndef _COCIRef
#include "ociref.h"
#endif

#ifndef _COCIAttribute
#include "ociattr.h"
#endif

class COCITable;
class COCILob;
class COCIDate;
class COCINumber;

template<class T>
class COCINestedTable;

class COCIObject : public COCIBase
{
public:
  // Creates a transient object in application 
  COCIObject(const COCISession& Sess, OCITypeCode typecode, COCIType Type = COCIType());

  // Create a new persistent object on server
  COCIObject(const COCISession& Sess, COCITable Table, COCIType Type, COCIObject* parent = (COCIObject*)0);

  // Creates a transient object in application 
  COCIObject(const COCISession& Sess, COCIType pType, COCIObject* parent = (COCIObject*)0);

  // Create an object knowning the OCI instance, and the OCI Type
  COCIObject(const COCISession& Sess, dvoid* object_instance, COCIType type, COCIObject* parent = 0, OCITypeCode = OCI_TYPECODE_OBJECT);

  // Copy constructor
  COCIObject(const COCIObject& src);

  // Default constructor
  COCIObject();

  virtual ~COCIObject();

  void array_pin();
  void copy();
  bool exists();
  void flush(void);
  void free(void);
  bool is_locked();
  OCIObjectLifetime life();
  void lock();
  void mark_delete();
  void mark_delete_by_ref();
  void mark_update();
  void unmark();
  void pin(OCIPinOpt pin_option = OCI_PIN_ANY, OCILockOpt lock_option = OCI_LOCK_NONE);
  void unpin();
  void pin_count_reset();
  void pin_table();
  void refresh();

  COCIRef get_ref(void);
  void get_ind(void);
  void set_ind(OCIInd ind);
  void set_attr_ind(char*, OCIInd ind);

  // Accessors...
  // set( <attribute name> , <attribute value> )
  void set(const char*, const int value);
  void set(const char*, const COCINumber& value);
  void set(const char*, const char* value);
  void set(const char*, const COCIString& value);
  void set(const char*, const COCILob& value);
  void set(const char*, const COCIObject& value);
  void set(const char*, const COCIDate& value);
  void set(const char*, const COCIRef& value);
  void set(const char*, const COCINestedTable<COCIObject>& value);
  void set(const char*, const COCINestedTable<COCINumber>& value);
  void set(const char*, const COCINestedTable<COCIRef>& value);

  // get( < attribute name > ) : COCIAttribute
  COCIAttribute get(char* attr);

  COCIObject& operator = (const COCIObject& src);

public:
  const COCITable& get_table() const {return m_Table;}
  const COCIType& get_type() const {return m_Type;}
  const int get_attr_count() {return m_Type.get_attr_count(); }

  // Brings back an array of objects given their refs
  static std::vector<COCIObject> array_pin(std::vector<COCIRef>& refs, int cor_depth = 1);


  dvoid* get_attr_instance(char* attr, OCIType*& attr_tdo);
private:
  const COCISession& m_Session;
  const OCITypeCode m_TypeCode;
  COCIType m_Type;
  COCITable m_Table;
  OCIInd Ind;
  dvoid* pinned_object;
  COCIObject* m_parent_object;
  bool m_Copy;
  bool m_Transient;
};


#endif

⌨️ 快捷键说明

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