# Crate Java Client

To access a Crate Cluster a Java client library is available. The library exposes a very simply interface to query Crate using SQL.

## Usage

A minimal example is just a few lines of code:

    import org.cratedb.client.CrateClient;

    CrateClient client = new CrateClient("server1.crate.org:9300", "server2.crate.org:9300");
    SQLResponse r = client.sql("select firstName, lastName from users").actionGet();

    System.out.println(Arrays.toString(r.cols()));
    // outputs ["firstName", "lastName"]

    for (Object[] row: r.rows()){
        System.out.println(Arrays.toString(row));
    }
    // outputs the users. For example:
    // ["Arthur", "Dent"]
    // ["Ford", "Perfect"]

The CrateClient takes multiple servers as arguments. They are used in a round-robin fashion to distribute the load. In case a server is unavailable it will be skipped.

Queries are executed asynchronous. client.sql(“”) will return a Future<SQLResponse> and code execution is only blocked if .actionGet() is called on it.

## Maven

The easiest way to use the crateclient is to include it as a dependency using maven:

    <dependency>
        <groupId>org.crate<groupId>
        <artifactId>crateClient</artifactId>
        <version>0.1.0</version>
    </dependency>