Query Code Samples Returning ResultSet

API examples demonstrate methods for returning ResultSet for both built-in and user-defined data types.

Query Returns a ResultSet for a Built-In Data Type

QueryServicePtr qrySvcPtr = cachePtr->getQueryService("examplePool");
QueryPtr query = qrySvcPtr->newQuery("select distinct pkid from /portfolios");
//specify 10 seconds for the query timeout period
SelectResultsPtr results = query->execute(10);
if (results == NULLPTR)
{
   printf( "\nNo results returned from the server");
}

//obtaining a handle to resultset
ResultSetPtr rs(dynamic_cast<ResultSet*> (results.ptr()));
if (rs == NULLPTR)
{
   printf ("\nResultSet is not obtained \n"); return;
}
//iterating through the resultset using row index.
for (int32_t row=0; row < rs->size(); row++)
{
   SerializablePtr ser((*rs)[row]);
   CacheableStringPtr str(dynamic_cast<CacheableString*> (ser.ptr()));
   if (str != NULLPTR)
   {
      printf("\n string column contains - %s \n", str->asChar() );
   }
}

Query Returns a ResultSet for a User-Defined Data Type

QueryServicePtr qrySvcPtr = cachePtr->getQueryService("examplePool");
const char * querystring = "select distinct * from /portfolios";
QueryPtr query = qrySvcPtr->newQuery(querystring);
//specify 10 seconds for the query timeout period
SelectResultsPtr results = query->execute(10);
if (results == NULLPTR)
{
   printf( "\nNo results returned from the server");
}
//obtaining a handle to resultset
ResultSetPtr rs(dynamic_cast<ResultSet*> (results.ptr()));
if (rs == NULLPTR)
{
   printf ("\nResultSet is not obtained \n"); return;
}
//iterating through the resultset using iterators.
SelectResultsIterator iter = rs->getIterator();
while (iter.hasNext())
{
   SerializablePtr ser = iter.next();
   PortfolioPtr port(dynamic_cast<Portfolio*> (ser.ptr()));
   if (port != NULLPTR)
   {
      printf("\nPortfolio object is - %s \n", port->toString().c_str() );
   }
} // end of rows