Difference between revisions of "Query Mode"

From BaseX Documentation
Jump to navigation Jump to search
Line 1: Line 1:
<p>In the query mode a query can be send to the server and executed
+
<p>In the query mode of the [[Language Bindings|bindings]], a query can be sent to the server and
in an iterative manner. For this you have to call the <code>query()</code> function
+
executed in an iterative manner. For this, you need to call the <code>query()</code> function
of the <code>Session</code> with your defined query. This will return a query object
+
of the <code>Session</code> with your defined query. This will return a query object,
which comes with an forward-only iterator to get each result of the query.
+
which comes with a forward-only iterator to get each result of the query.
Furthermore it is possible to bind variables to the query using the <code>bind()</code> function
+
Furthermore, variables can be bound to the query using the <code>bind()</code> function
 
of the query object.</p>  
 
of the query object.</p>  
 
   
 
   

Revision as of 20:53, 11 January 2011

In the query mode of the bindings, a query can be sent to the server and executed in an iterative manner. For this, you need to call the query() function of the Session with your defined query. This will return a query object, which comes with a forward-only iterator to get each result of the query. Furthermore, variables can be bound to the query using the bind() function of the query object.

Usage

The query execution works as follows:

  1. Create a new session instance with hostname, port, username and password.
  2. Call the query() function of the session with the query as argument to get your query object.
  3. Optionally bind variables to the query with the bind() function.
  4. Initialize query output via init().
  5. Iterate through the query object with the more() and next() functions. If an error occurs, an exception is thrown.
  6. Close the query with close().

Example in PHP

<?php
/*
 * This example shows how queries can be executed in an iterative manner.
 * Documentation: http://basex.org/api
 *
 * (C) BaseX Team 2005-11, ISC License
 */
include("BaseXClient.php");

try {
  // create session
  $session = new Session("localhost", 1984, "admin", "admin");
  
  try {
    // create query instance
    $input = 'declare variable $name external; '.
      'for $i in 1 to 10 return element { $name } { $i }';
    $query = $session->query($input);

    // bind variable
    $query->bind("$name", "number");

    // initialize query
    print $query->init();

    // loop through all results
    while($query->more()) {
      print $query->next()."\n";
    }

    // close query instance
    print $query->close();

  } catch (Exception $e) {
    // print exception
    print $e->getMessage();
  }

  // close session
  $session->close();

} catch (Exception $e) {
  // print exception
  print $e->getMessage();
}
?>

for more examples see the languages section.