Importing from an Oracle Spatial Database: code sample

Land Desktop Development ARX CPP SDK

 

Importing from an Oracle Spatial Database

The following sample illustrates importing data from an Oracle Spatial database to a project drawing. It is in two parts. First, it defines a query to specify a condition for the objects to import, and then it imports them.

Note  The sample assumes that there is an open project drawing, and that an import query has been defined already through the Import dialog box in the UI (choose Map > OracleSpatial > ImportObjectsFromOracle). It also assumes that the connection object is actually connected to a database. Click "Connecting to an Oracle Spatial Database" for sample code.

#include "StdAfx.h"
#include "StdArx.h"
#include "AcMapOracleConnection.h"
#include "AcMapOracleQuery.h"
#include "AcMapOracleImport.h"

BOOL ImportFromOracle()
{

// Get the connection object
AcMapOracleConnection *pConnection = AcMapOracleGetConnection();

/*********************/
/******* Query *******/

// Instantiate a query object
AcmapOracleQuery *pQuery = 
      new AcMapOracleQuery(pConnection);

// Initialize query object with current import query, 
// which has been defined already through the UI
pQuery->InitWithCurrent(
      acdbHostApplicationServices()->workingDatabase());

// Or initialize query with specific condition
pQuery->Init("EntityType = 'AcDbCircle'");

// You can check the whole query by 
// using ConvertToSql function       
char *pSql = pQuery->ConvertToSql();
acutPrintf("\nQuery in SQL format:%s", pSql);

// Save the query to the Oracle Spatial database
pQuery->Save("MyQuery");

// Load the saved query in a new query object
AcMapOracleQuery *pNewQuery = 
      new AcMapOracleQuery(pConnection);

pNewQuery->Load("MyQuery");

// Compare old and new query
char *pNewSql = pNewQuery->ConvertToSql();

if(strcmp(pSql, pNewSql) == 0)
   acutPrintf("Query Load/Save works!!\n");
else
   acutPrintf("Query Load/Save failed!!\n");


/**********************/
/******* Import *******/

// Instantiate an import object
AcMapOracleImport *pImport =
      new AcMapOracleImport(pConnection);

// Use the query object defined above to 
// import Oracle Spatial data
if(pImport->CheckImport())
{
   if(pImport->Import(pQuery, false))
      acutPrintf("\nImported successfully\n");
   else
      acutPrintf("\nImport failed\n");
}
else
   acutPrintf("\nCheckImport() failed, can not import!\n");

}