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.
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(); }