Here we’ll briefly tour basic features of ADBC with the PostgreSQL driver for Java.


To include ADBC in your Maven project, add the following dependency:


For the examples in this section, the following imports are required:

import org.apache.arrow.adbc.core.AdbcConnection;
import org.apache.arrow.adbc.core.AdbcDatabase;
import org.apache.arrow.adbc.core.AdbcDriver;
import org.apache.arrow.adbc.core.AdbcException;
import org.apache.arrow.adbc.core.AdbcStatement;

JDBC-style API#

ADBC provides a high-level API in the style of the JDBC standard.


final Map<String, Object> parameters = new HashMap<>();
parameters.put(AdbcDriver.PARAM_URL, "jdbc:postgresql://localhost:5432/postgres");
try (
    BufferAllocator allocator = new RootAllocator();
    AdbcDatabase db = new JdbcDriver(allocator).open(parameters);
    AdbcConnection adbcConnection = db.connect();
    AdbcStatement stmt = adbcConnection.createStatement()

) {
    stmt.setSqlQuery("select * from foo");
    AdbcStatement.QueryResult queryResult = stmt.executeQuery();
    while (queryResult.getReader().loadNextBatch()) {
        // process batch
}  catch (AdbcException e) {
    // throw

In application code, the connection must be closed after usage or memory may leak. It is recommended to wrap the connection in a try-with-resources block for automatic resource management. In this example, we are connecting to a PostgreSQL database, specifically the default database “postgres”.

Note that creating a statement is also wrapped in the try-with-resources block. Assuming we have a table “foo” in the database, an example for setting and executing the query is also provided.