package org.basex.examples.server;
import org.basex.*;
import org.basex.api.client.*;
/**
* This class demonstrates query execution via the client/server architecture.
*
* @author BaseX Team 2005-17, BSD License
*/
public final class ServerQueries {
/**
* Runs the example code.
* @param args (ignored) command-line arguments
* @throws Exception exception
*/
public static void main(final String... args) throws Exception {
System.out.println("=== ServerQueries ===");
// Start server
System.out.println("\n* Start server.");
BaseXServer server = new BaseXServer();
// Create a client session with host name, port, user name and password
System.out.println("\n* Create a client session.");
try(ClientSession session = new ClientSession("localhost", 1984, "admin", "admin")) {
// Run a query
System.out.print("\n* Run a query: ");
System.out.println(session.execute("XQUERY 1"));
// Run a query, specifying an output stream
System.out.print("\n* Run a query (faster): ");
session.setOutputStream(System.out);
session.execute("XQUERY 1 to 2");
System.out.println();
// Reset output stream
session.setOutputStream(null);
// Run a query, specifying an output stream (second version)
System.out.print("\n* Use query instance: ");
session.execute("set queryinfo on");
try(ClientQuery query = session.query("1 to 3")) {
System.out.println(query.execute());
System.out.print("\n* Show query info: \n");
System.out.println(query.info());
}
// Iteratively run a query
System.out.print("\n* Iterate over results: ");
try(ClientQuery query = session.query("1 to 4")) {
while(query.more()) {
System.out.print(query.next() + ' ');
}
System.out.println();
}
// Bind a variable
System.out.print("\n* Bind variable $a: ");
session.execute("set queryinfo on");
try(ClientQuery query = session.query("declare variable $a as xs:int external; 1 to $a")) {
query.bind("$a", "5");
System.out.println(query.execute());
}
// Close the client session
System.out.println("\n* Close the client session.");
}
// Stop the server
System.out.println("\n* Stop the server.");
server.stop();
}
}