JServerResultSet example

The example method below sends three rows with three columns each. Note that exceptions are not caught in the example; the server logs any uncaught exceptions that are thrown in a method call:

public void send_rows (IntegerHolder ih) throws
      JException, SQLException 
{

  // Declare the constant ’pi’
  final double pi = 3.1414;  // Create the metadata object.
  JServerResultSetMetaData 
       jsrsmd = JContext.createServerResultSetMetaData();

  // There will be 3 columns in the result set.
  jsrsmd.setColumnCount(3);

  // The first column has datatype INTEGER and name ’one’.
  jsrsmd.setColumnType(1, Types.INTEGER);
  jsrsmd.setColumnName(1, "one");

  // The second column has datatype VARCHAR and name ’two’.
  jsrsmd.setColumnType(2, Types.VARCHAR);
  jsrsmd.setColumnName(2, "two");

  // The third column has datatype DOUBLE and name ’three’.
  jsrsmd.setColumnType(3, Types.DOUBLE);
  jsrsmd.setColumnName(3, "three");
  
  // Create the result set object.
  JServerResultSet jsrs = JContext.createServerResultSet(jsrsmd);

  // Position the cursor.
  jsrs.next();

  // First row values: 1, "first", pi 
  jsrs.setInt(1, 1);
  jsrs.setString(2, "first");
  jsrs.setDouble(3, pi);

  // Send the row.
  jsrs.next();

  // Second row values: 2, "second", pi * 2
  jsrs.setInt(1, 2);
  jsrs.setString(2, "second");
  jsrs.setDouble(3, pi * 2.0);

  // Send the row.
  jsrs.next();

  // Third row values: 3, "third", pi * 3
  jsrs.setInt(1, 3);
  jsrs.setString(2, "third");
  jsrs.setDouble(3, pi * 3.0);

  // Send the row.
  jsrs.next();

  // Demarcate the end of the result set by calling done().
  jsrs.done();
}

The fragment below shows client-side code to call the stub and print the rows to the console. For more information about coding the client to retrieve result sets from components, see “Return result sets”.

try {
  ih = new IntegerHolder();
  comp.send_rows(ih);

  ResultSet rs = comp.getResultSet();
  ResultSetMetaData rsmd = rs.getMetaData();

  StringBuffer row = new StringBuffer("");
  for (int i = 1; i <= rsmd.getColumnCount(); i++)
  {
    row.append(rsmd.getColumnName(i));
    if (i < rsmd.getColumnCount())
      row.append("\t");
  }

  System.out.println(row);
 
  while(rs.next())
  {
    row = new StringBuffer("");
    for (int i = 1; i <= rsmd.getColumnCount(); i++)
    {
      row.append(rs.getString(i));
      if (i < rsmd.getColumnCount())
        row.append("\t");
    }
    System.out.println(row);
  }

  // Discard any remaining results.
  while(comp.getMoreResults())
  {
    rs = comp.getResultSet();
  }
 
}
catch (Exception e) {
  System.out.println("Exception: " + e.getMessage());
  e.printStackTrace();
}