Client Libraries

ADBC client libraries let you connect to databases and execute queries from your language of choice. Because most ADBC drivers expose the same standard C ABI, a single client library can generally use drivers written in any language through the same client API.

Note

On this page we use the terms client library and driver manager interchangeably. More precisely, the driver manager is the part of a client library that dynamically loads ADBC driver shared libraries and forwards your calls to them; the client library wraps that machinery in an API that feels idiomatic in your language.

The package names are, unfortunately, not consistent about this. Some are named for the driver manager (Python’s adbc-driver-manager, R’s adbcdrivermanager), while others are named for ADBC itself (C#’s Apache.Arrow.Adbc.Client, Ruby’s red-adbc). They all give you the same thing: a way to load drivers and talk to databases from your language.

Packages

The client library package for each language:

Language

Package Manager

Package

Documentation

Python

pip / conda

adbc-driver-manager

Python Quickstart

C/C++

various

See quickstart

C/C++ Quickstart

C#

dotnet

Apache.Arrow.Adbc.Client

C#/.NET

Go

go

github.com/apache/arrow-adbc/go/adbc

Go Documentation ↗

Java

Maven

org.apache.arrow.adbc: adbc-core, adbc-driver-manager, adbc-driver-jni

Java Quickstart

JavaScript / TypeScript

npm

@apache-arrow/adbc-driver-manager

JavaScript Quickstart

R

CRAN / conda

adbcdrivermanager

R

Ruby

bundler

red-adbc

Ruby

Rust

cargo

adbc_core, adbc_driver_manager

Rust Quickstart

Using a Client Library

Client libraries provide a language-native interface on top of the ADBC API. They handle loading drivers, managing connections, and converting results into idiomatic types for each language. For example, Python exposes a DBAPI 2.0 (PEP 249)-style interface, Go uses database/sql, and R uses DBI.

A client library on its own can’t talk to a database—it also needs a driver for the database you want to connect to. The client library loads the driver at runtime, so you install the client library once and then add a driver for each database you use. See Drivers for the full list of available drivers and how to install them.

You may not need to use a client library directly at all: many higher-level tools, such as pandas and Polars, integrate with ADBC and use it under the hood. See Tools & Integrations for more.

More Information

  • ADBC Quickstarts — simple, runnable examples for getting started in each of these languages, across a range of databases