Constructing queries
First of create a query object
SolutionQuery myQuery = session.getSolutionQuery( "mynewsolution" );
A query is built much like an SQL query by appending different fields to be SELECT'ed
myQuery.addSelectField("MYNUMBER");
Additionally WHERE components are added
myQuery.addWhereCriterion("StatusID", "In progress");
myQuery.addWhereCriterion("INCOME", QueryPart.MORE, "22");
myQuery.addWhereInList("PARENTITEMS", arrayListOfDataID);
Likewise operators can be added
...
myQuery.addWhereOR();
...
...
myQuery.addWhereAND();
...
Note that lookup values etc. will be translated silently.
myQuery.setSortOrder("INCOME", true);
Order records by income in descending order (true).
By default the API limits solution queries to 100 rows. To increase this:
myQuery.setLimit(100000);
To do pagination use this:
myQuery.setLimitAndOffset(100, 100);
Finally execute the query and return the results
SolutionQueryResultSet records = myQuery.executeQuery();
Retrieve data
Data are extracted from the query resultset using a relative reference to the record number
for( int i=0; i<resultSet.size(); i++ ) {
String text = "Value nr " + i " = " + '''resultSet.getRecordValue( i, "MYVALUE" );'''
System.out.println( text );
}
Retriever methods exist for different datatypes
public int getReference( int recordNr )
public Hashtable <String,String> getRecordValueList( int recordNr )
public String getRecordValue( int recordNr, String fieldName )
public int getRecordValueInteger( int recordNr, String fieldName )
private SolutionRecord getRecord(int recordNr, boolean isWrite)