亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wreadandwritegeometry.cpp

?? ReadAndWriteOracleSpatial C++讀寫OracleSpatial
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

//----------------------------------------------
// WReadAndWriteGeometry.cpp
//----------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <vector>
using namespace std;

#include "WReadAndWriteGeometry.h"

static double test_ordinates[] = {
 0, 0,
 1, 1
 };

/*******************************************************************************
**
** Routine:     WReadAndWriteGeometry
**
** Description: 構造函數
**
*******************************************************************************/
WReadAndWriteGeometry::WReadAndWriteGeometry(char *username, char *password,char *connectstring)
{
 dschp = NULL;
 geom_tdo = NULL;
 elem_info_tdo = NULL;
 ordinates_tdo = NULL;

 global_ending_offset = -1;

 for(int i=0;i<ARRAY_SIZE;i++)
 { 
  global_geom_obj[i] = NULL;
  global_geom_ind[i] = NULL;
 }

 connect(username, password, connectstring);
}


/*******************************************************************************
**
** Routine:     ~WReadAndWriteGeometry
**
** Description: 析構函數
**
*******************************************************************************/
WReadAndWriteGeometry::~WReadAndWriteGeometry()
{
 disconnect();
}


/*******************************************************************************
**
** Routine:     checkerr
**
** Description: Error message routine
**
*******************************************************************************/
void WReadAndWriteGeometry::checkerr(OCIError *errhp, sword status)
{
 text errbuf[512];
 sb4 errcode = 0;

 switch (status)
 {
 case OCI_SUCCESS:
  break;
 case OCI_SUCCESS_WITH_INFO:
  fprintf(stderr, "OCI_SUCCESS_WITH_INFO\n");
  break;
 case OCI_ERROR:
  OCIErrorGet((dvoid *)errhp, (ub4)1, (text *)NULL, &errcode, 
      errbuf, (ub4)sizeof(errbuf), OCI_HTYPE_ERROR);
  fprintf(stderr, "%.*s\n", 512, errbuf);
  break;
 case OCI_NEED_DATA:
  fprintf(stderr, "OCI_NEED_DATA\n");
  break;
 case OCI_NO_DATA:
  fprintf(stderr, "OCI_NO_DATA\n");
  break;
 case OCI_INVALID_HANDLE:
  fprintf(stderr, "OCI_INVALID_HANDLE\n");
  break;
 case OCI_STILL_EXECUTING:
  fprintf(stderr, "OCI_STILL_EXECUTING\n");
  break;
 case OCI_CONTINUE:
  fprintf(stderr, "OCI_CONTINUE\n");
  break;
 default:
  break;
 }

 if (status != OCI_SUCCESS && status != OCI_SUCCESS_WITH_INFO)
  disconnect();
}


/*******************************************************************************
**
** Routine:     connect
**
** Description: Connects to oracle, and set error routine sqlerror.
**
*******************************************************************************/
void WReadAndWriteGeometry::connect(char *username, char *password, char *connectstring)
{

// int maxsz = 50 ;  /* 50% increase ? */
// int optsz = 2048000 ;  /* 2000 K bytes */
// int curmaxsz, curoptsz;

 /* Allocate and initialize OCI environment handle, envhp */
 OCIInitialize((ub4) OCI_OBJECT, (dvoid *)0, (dvoid * (*)(dvoid *,size_t)) 0,
  (dvoid * (*)(dvoid *, dvoid *, size_t)) 0,
  (void (*)(dvoid *, dvoid *)) 0 );
 OCIEnvInit(&envhp, (ub4)OCI_DEFAULT, (size_t)0, (dvoid **)0);

 /* 
   **  Initialize error report handle, errhp
   **  Initialize sever context handle, srvhp 
   */
 OCIHandleAlloc((dvoid *)envhp, (dvoid **)&errhp, (ub4)OCI_HTYPE_ERROR,
     (size_t)0, (dvoid **)0);
 OCIHandleAlloc((dvoid *)envhp, (dvoid **)&srvhp, (ub4)OCI_HTYPE_SERVER,
     (size_t)0, (dvoid **)0);
 OCIServerAttach(srvhp, errhp, (text *)connectstring, (sb4)strlen(connectstring), (ub4)OCI_DEFAULT);

 /* initialize svchp */
 OCIHandleAlloc((dvoid *)envhp, (dvoid **)&svchp, (ub4)OCI_HTYPE_SVCCTX, 
     (size_t)0, (dvoid **)0);
 OCIAttrSet((dvoid *)svchp, (ub4)OCI_HTYPE_SVCCTX, (dvoid *)srvhp, (ub4)0, 
     (ub4)OCI_ATTR_SERVER, errhp);

 /* initialize usrhp */
 OCIHandleAlloc((dvoid *)envhp, (dvoid **)&usrhp, (ub4)OCI_HTYPE_SESSION, 
     (size_t)0, (dvoid **)0);
 OCIAttrSet((dvoid *)usrhp, (ub4)OCI_HTYPE_SESSION, 
     (dvoid *)username, (ub4)strlen(username), 
     (ub4)OCI_ATTR_USERNAME, errhp);
 OCIAttrSet((dvoid *)usrhp, (ub4)OCI_HTYPE_SESSION, 
     (dvoid *)password, (ub4)strlen(password), 
     (ub4)OCI_ATTR_PASSWORD, errhp);

 /* session begins */
 checkerr(errhp, OCISessionBegin(svchp, errhp, usrhp, OCI_CRED_RDBMS,
     OCI_DEFAULT));
 OCIAttrSet((dvoid *)svchp, (ub4)OCI_HTYPE_SVCCTX, (dvoid *)usrhp, (ub4)0, 
     (ub4)OCI_ATTR_SESSION, errhp);


 /* initialize stmthp */
 checkerr(errhp, OCIHandleAlloc((dvoid *)envhp, (dvoid **)&stmthp, 
     (ub4)OCI_HTYPE_STMT, (size_t)0, (dvoid **)0));

 /* describe spatial object types */
 checkerr(errhp, OCIHandleAlloc(envhp, (dvoid **)&dschp, 
     (ub4)OCI_HTYPE_DESCRIBE, (size_t)0,
     (dvoid **)0));

 geom_tdo = get_tdo(SDO_GEOMETRY);

 printf ("\nConnected to Oracle.\n");
}


/*******************************************************************************
**
** Routine:     disconnect
**
** Description: Disconnect from Oracle
**
*******************************************************************************/
void WReadAndWriteGeometry::disconnect(void)
{
 /* finalize type descriptor */
 checkerr(errhp, OCIHandleFree((dvoid *)dschp, (ub4)OCI_HTYPE_DESCRIBE));

 /* finalize stmthp */
 OCIHandleFree((dvoid *)stmthp, (ub4)OCI_HTYPE_STMT);

 /* session ends */
 OCISessionEnd(svchp, errhp, usrhp, (ub4)OCI_DEFAULT);
 OCIServerDetach(srvhp, errhp, (ub4)OCI_DEFAULT);

 /* finalize svchp, srvhp, and errhp */
 OCIHandleFree((dvoid *)svchp, (ub4)OCI_HTYPE_SVCCTX);
 OCIHandleFree((dvoid *)srvhp, (ub4)OCI_HTYPE_SERVER);
 OCIHandleFree((dvoid *)errhp, (ub4)OCI_HTYPE_ERROR);

 printf ("\nDisconnected from Oracle.\n");
 exit(0);
}

 

/******************************************************************************
**
** Routine:     get_tdo
**
** Description: Returns the 
**
******************************************************************************/
OCIType *WReadAndWriteGeometry::get_tdo(char *typeName)
{
 OCIParam *paramp = NULL;
 OCIRef *type_ref = NULL;
 OCIType *tdo = NULL;

 checkerr(errhp, OCIDescribeAny(svchp, errhp, (text *)typeName, 
     (ub4)strlen((char *)typeName), 
     OCI_OTYPE_NAME, (ub1)1, 
     (ub1)OCI_PTYPE_TYPE, dschp));
 checkerr(errhp, OCIAttrGet((dvoid *)dschp, (ub4)OCI_HTYPE_DESCRIBE,
     (dvoid *)&paramp, (ub4 *)0, 
     (ub4)OCI_ATTR_PARAM, errhp));
 checkerr(errhp, OCIAttrGet((dvoid *)paramp, (ub4)OCI_DTYPE_PARAM,
     (dvoid *)&type_ref, (ub4 *)0, 
     (ub4)OCI_ATTR_REF_TDO, errhp));
 checkerr(errhp, OCIObjectPin(envhp, errhp, type_ref, (OCIComplexObject *)0, 
     OCI_PIN_ANY, OCI_DURATION_SESSION, 
     OCI_LOCK_NONE, (dvoid **)&tdo));
 if (!tdo)
 {
  fprintf(stderr, "Null tdo returned for type %s.\n", typeName);
  disconnect();
 }

 return tdo;
}

 


/*******************************************************************************
**
** Routine:     process_data
**
** Description: Process the data for current host array fetch.
**
*******************************************************************************/
void WReadAndWriteGeometry::process_data(int  num_dimensions, char *id_column, int  rows_to_process, int  *rows_processed)
{
 int            row;
 double         double_gid;

 for (row = 0; row < rows_to_process; row++, (*rows_processed)++)
 {
  /*
      ** Get ID_COLUMN
      */
  checkerr(errhp, OCINumberToReal(errhp, &(global_gid[row]), 
      (uword)sizeof(double), 
      (dvoid *)&double_gid));

  printf("\n%s %.5lf\n", id_column, double_gid);

  sc_ops_init_geometry (global_geom_obj[row], 
      global_geom_ind[row],
      num_dimensions);

  if (sc_ops_geom_null())
  {
   printf ("OBJECT IS NULL\n");
   fflush (stdout);
  }
  else
  {
   sc_ops_get_gtype ();
   sc_ops_get_sdo_point ();

   /* Loop through and print all the elements for this geometry */
   while (sc_ops_next_elem ())
   {
    switch (sc_ops_get_element_type ())
    {
    case 1: 
     sc_ops_get_type1();
     break;
    case 2: 
     sc_ops_get_type2();
     break;
    case 3: 
     sc_ops_get_type3();
     break;
    case 4: 
     sc_ops_get_type4();
     break;
    case 5: 
     sc_ops_get_type5();
     break;
    }
   }

   /* free the spatial object instance */
   checkerr(errhp, OCIObjectFree(envhp, errhp, (dvoid *)global_geom_obj[row], 
       (ub2)OCI_OBJECTFREE_FORCE));
   global_geom_obj[row] = NULL;
  }
 } /* end of for-loop: row */
}


/*******************************************************************************
**
** Routine:     read_geometries
**
** Description: 
**
*******************************************************************************/
void WReadAndWriteGeometry::read_geometries (char *table, char *geom_column, char *id_column, int   num_dimensions)
{
 int nrows = 0,
 rows_fetched = 0, 
 rows_processed = 0,
 rows_to_process = 0;
 char      query[100];
 sword     status;
 boolean   has_more_data = TRUE;
 OCIDefine *defn1p = NULL, 
     *defn2p = NULL;

 /* construct query */
 sprintf(query, "SELECT %s, %s FROM %s", id_column, geom_column, table);

 /* parse query */
 checkerr(errhp, OCIStmtPrepare(stmthp, errhp, 
     (text *)query, (ub4)strlen(query), 
     (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT));

 /* define GID and spatial ADT object */
 checkerr(errhp, OCIDefineByPos(stmthp, &defn1p, errhp, (ub4)1, 
     (dvoid *)global_gid, 
     (sb4)sizeof(OCINumber), SQLT_VNU,
     (dvoid *)0, (ub2 *)0, (ub2 *)0, 
     (ub4)OCI_DEFAULT));

 checkerr(errhp, OCIDefineByPos(stmthp, &defn2p, errhp, (ub4)2, 
     (dvoid *)0, (sb4)0, SQLT_NTY, (dvoid *)0,
     (ub2 *)0, (ub2 *)0, (ub4)OCI_DEFAULT));

 checkerr(errhp, OCIDefineObject(defn2p, errhp, geom_tdo, 
     (dvoid **)global_geom_obj, (ub4 *)0, 
     (dvoid **)global_geom_ind, (ub4 *)0));

 /* execute */
 status = OCIStmtExecute(svchp, stmthp, errhp, (ub4)ARRAY_SIZE, (ub4)0, 
     (OCISnapshot *)NULL, (OCISnapshot *)NULL, 
     (ub4)OCI_DEFAULT);

 if (status == OCI_SUCCESS_WITH_INFO || status == OCI_NO_DATA)
  has_more_data = FALSE;
  else
 {
  has_more_data = TRUE;
  checkerr(errhp, status);
 }

 /* process data */
 checkerr(errhp, OCIAttrGet((dvoid *)stmthp, (ub4)OCI_HTYPE_STMT,
     (dvoid *)&rows_fetched, (ub4 *)0, 
     (ub4)OCI_ATTR_ROW_COUNT, errhp));
 rows_to_process = rows_fetched - rows_processed;

 process_data(num_dimensions, id_column, 
     rows_to_process, &rows_processed);

 while (has_more_data)
 {
  status = OCIStmtFetch(stmthp, errhp, (ub4)ARRAY_SIZE, 
      (ub2)OCI_FETCH_NEXT, (ub4)OCI_DEFAULT);

  if (status != OCI_SUCCESS)
   has_more_data = FALSE;

  /* process data */
  checkerr(errhp, OCIAttrGet((dvoid *)stmthp, (ub4)OCI_HTYPE_STMT,
      (dvoid *)&rows_fetched, (ub4 *)0, 
      (ub4)OCI_ATTR_ROW_COUNT, errhp));
  rows_to_process = rows_fetched - rows_processed;

  process_data(num_dimensions, id_column, 
      rows_to_process, &rows_processed);
 }

 if (status != OCI_SUCCESS_WITH_INFO && status != OCI_NO_DATA)
  checkerr(errhp, status);
}


/*******************************************************************************
**
** Routine:     sc_ops_geom_null
**
** Description: Retruns 1 if the geometry object is NULL.
**
*******************************************************************************/
int
WReadAndWriteGeometry::sc_ops_geom_null (void)

{
  return (m_geom_ind->_atomic == OCI_IND_NULL);
}


/*******************************************************************************
**
** Routine:     sc_ops_init_geometry
**
** Description: Initializaton routine.
**              This must be called for a geometry before you call any
**              any other routines in sc_ops...
**
*******************************************************************************/
void
WReadAndWriteGeometry::sc_ops_init_geometry (SDO_GEOMETRY_TYPE *geom, 
                      SDO_GEOMETRY_ind  *geom_ind,
                      int               num_dimensions)

{
  m_geom_obj = geom;
  m_geom_ind = geom_ind;
  
  if (!sc_ops_geom_null())
  {
    /* Get the size of the sdo_elem_info array */
    checkerr(errhp, OCICollSize(envhp, errhp, 
    (  OCIColl *)(m_geom_obj->sdo_elem_info), 
    &global_nelems));

    /* Get the size of the ordinates array */
    checkerr(errhp, OCICollSize(envhp, errhp, 
    (OCIColl *)(m_geom_obj->sdo_ordinates), 
    &global_nords));

    global_elem_index = 0;
    global_first_elem = 1;
    global_ending_offset = -1;
    global_num_dimensions = num_dimensions;
  }
}


/*******************************************************************************
**
** Routine:     sc_ops_get_gtype
**
** Description: Prints the gtype field.
**
*******************************************************************************/
void
WReadAndWriteGeometry::sc_ops_get_gtype (void)

{
  int gtype;

  checkerr(errhp, OCINumberToInt(errhp, &(m_geom_obj->sdo_gtype),
     (uword)sizeof(int), OCI_NUMBER_SIGNED,
     (dvoid *)&gtype));

  printf("-- gtype: %d \n", gtype);
}


/*******************************************************************************
**
** Routine:     sc_ops_get_sdo_point
**
** Description: Prints the SDO_POINT field.
**              Routine checks for NULL sdo_point field and 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最新不卡av在线| 337p粉嫩大胆噜噜噜噜噜91av| 欧美色图免费看| 2021久久国产精品不只是精品| 亚洲精品久久久蜜桃| 久久精品国产99| 色婷婷久久久亚洲一区二区三区 | 五月婷婷欧美视频| 国产成人亚洲综合a∨猫咪| 欧美日本一区二区| 国产精品视频九色porn| 蜜臀av性久久久久蜜臀av麻豆| 91在线你懂得| 日本一区免费视频| 久久av老司机精品网站导航| 欧美色区777第一页| 中文字幕亚洲区| 国产成人av电影在线| 欧美一级二级在线观看| 亚洲国产综合视频在线观看| 97国产一区二区| 欧美激情一区在线观看| 国产真实乱子伦精品视频| 日韩一二三区不卡| 日韩—二三区免费观看av| 欧美性videosxxxxx| 亚洲乱码国产乱码精品精98午夜 | 五月婷婷欧美视频| 欧美丝袜丝交足nylons| 欧美激情一区在线观看| 国产亚洲成aⅴ人片在线观看| 欧美大度的电影原声| 色94色欧美sute亚洲线路一久| 日本视频一区二区| 亚洲一区二区免费视频| 国产精品的网站| 日韩三级伦理片妻子的秘密按摩| 色94色欧美sute亚洲13| 国产高清久久久| 国产精品一区二区久久精品爱涩| 国产欧美日韩亚州综合 | 亚洲欧美日韩一区| 成人免费福利片| ...xxx性欧美| 欧美综合视频在线观看| 亚洲成国产人片在线观看| 欧美精品一卡二卡| 伦理电影国产精品| 精品国产一区二区三区久久影院| 国内精品伊人久久久久影院对白| 久久久久亚洲综合| 成人性生交大片免费看视频在线 | aaa亚洲精品| 亚洲精品免费电影| 欧美一区二区福利视频| 激情六月婷婷综合| 中文字幕五月欧美| 欧美伦理影视网| 国产在线播精品第三| 国产三级精品视频| 欧洲一区在线观看| 美女一区二区三区在线观看| 久久网这里都是精品| 91丨九色丨蝌蚪丨老版| 日韩影院免费视频| 久久久国产一区二区三区四区小说| 成人涩涩免费视频| 午夜视频一区二区三区| 久久久久久久综合日本| 色婷婷精品久久二区二区蜜臂av| 日本一区中文字幕| 国产精品国产三级国产三级人妇 | 99免费精品视频| 三级亚洲高清视频| 国产精品九色蝌蚪自拍| 欧美一级片免费看| 91小视频在线| 国产一区二区主播在线| 亚洲在线一区二区三区| 久久影院视频免费| 欧洲视频一区二区| 国产69精品久久99不卡| 日韩主播视频在线| 亚洲欧美另类小说| 国产天堂亚洲国产碰碰| 欧美亚洲免费在线一区| 成人黄色在线网站| 久久精品国产亚洲高清剧情介绍 | 欧美va日韩va| 亚洲福利一二三区| 欧美日韩五月天| 亚洲国产精品久久人人爱蜜臀| 91麻豆自制传媒国产之光| 久久亚洲精华国产精华液| 国内成人免费视频| 日韩黄色在线观看| 精品嫩草影院久久| 日本韩国视频一区二区| 国产一区中文字幕| 日韩专区欧美专区| 亚洲一级电影视频| 亚洲精品视频自拍| 中文字幕久久午夜不卡| www国产成人免费观看视频 深夜成人网| 日本精品一区二区三区四区的功能| 国产精品中文字幕一区二区三区| 日韩av成人高清| 亚洲大片免费看| 亚洲午夜久久久| 樱桃国产成人精品视频| 国产精品国产三级国产专播品爱网| 久久久蜜臀国产一区二区| 欧美精品v国产精品v日韩精品| 欧美在线免费观看亚洲| 日本国产一区二区| 91黄视频在线观看| 在线观看一区二区视频| 在线观看亚洲专区| 在线观看日韩电影| 欧美三级电影精品| 欧美精品色一区二区三区| 欧美丰满高潮xxxx喷水动漫| 欧美日本高清视频在线观看| 欧美巨大另类极品videosbest| 欧美三区免费完整视频在线观看| 91蝌蚪porny九色| 在线观看一区日韩| 91精品国产综合久久精品app| 56国语精品自产拍在线观看| 日韩小视频在线观看专区| 日韩欧美在线综合网| 欧美精品一区二区三区蜜臀| 久久久久综合网| 中文字幕亚洲成人| 亚洲国产精品久久人人爱蜜臀| 天天综合天天做天天综合| 麻豆精品新av中文字幕| 国产伦精品一区二区三区免费迷| 成人性视频网站| 色香蕉成人二区免费| 欧美精品在欧美一区二区少妇| 欧美www视频| 综合婷婷亚洲小说| 亚洲成人av电影| 捆绑变态av一区二区三区| 国产福利一区二区三区在线视频| 99久久婷婷国产综合精品 | 五月婷婷综合激情| 国内精品写真在线观看| jizzjizzjizz欧美| 欧美欧美午夜aⅴ在线观看| 26uuu国产在线精品一区二区| 国产精品沙发午睡系列990531| 亚洲一级电影视频| 国产suv一区二区三区88区| 欧美亚洲另类激情小说| 久久久久久久免费视频了| 一区二区三区在线播| 毛片一区二区三区| 中文一区在线播放| 亚洲制服丝袜av| 色天天综合色天天久久| 国产一区福利在线| 91精品国产综合久久久久久久| 国产精品久久久久久久久果冻传媒| 一区二区三区丝袜| 成人亚洲一区二区一| 日韩欧美激情在线| 日韩专区在线视频| 99综合电影在线视频| 欧美一二三区在线| 一区二区三区**美女毛片| youjizz久久| 中文字幕 久热精品 视频在线 | 国产精品一区二区在线播放 | 91视视频在线观看入口直接观看www | 91麻豆精品国产91久久久久| 久久精品欧美日韩精品| 午夜激情综合网| 91免费视频观看| 国产精品网站一区| 国模娜娜一区二区三区| 制服丝袜国产精品| 亚洲综合图片区| 色婷婷综合激情| 日韩毛片高清在线播放| 国产成人av电影在线播放| 久久你懂得1024| 久久精工是国产品牌吗| 欧美一区二区三区在线电影| 亚洲精品第一国产综合野| 99久久99久久精品免费观看| 国产视频在线观看一区二区三区| 美女网站视频久久| 日韩亚洲国产中文字幕欧美| 丝袜美腿一区二区三区| 欧美日韩国产综合一区二区三区| 亚洲一区二区三区四区中文字幕| 972aa.com艺术欧美| 亚洲四区在线观看|