Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Connecting C++ and Microsoft SQL Server with ADBC

Instructions

Tip

If you already have a SQL Server instance running, skip the steps to run SQL Server in a Docker container.

Prerequisites

  1. Install Pixi

  2. Install dbc

  3. Install Docker

Set up SQL Server

  1. Start SQL Server in a Docker container:

    docker run \
       -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Co1umn&r" \
       -p 1433:1433 --name mssql --hostname mssql \
       -d \
       mcr.microsoft.com/mssql/server:2025-latest
  2. Create a table in SQL Server and load data into it:

    docker cp games.sql mssql:/tmp/games.sql
    
    docker exec -it mssql /opt/mssql-tools18/bin/sqlcmd \
      -S localhost -U sa -P 'Co1umn&r' -C -i /tmp/games.sql

Connect to SQL Server

  1. Install the SQL Server ADBC driver:

    dbc install --level user mssql
  2. Customize the C++ program main.cpp as needed

    • Change the connection arguments in the AdbcDatabaseSetOption() calls
      • Change uri as needed, using query parameters to add more connection arguments, or keep it as is to use the data included with this example
    • If you changed which database you're connecting to, also change the SQL SELECT statement in AdbcStatementSetSqlQuery()

Tip

To use Microsoft Entra ID for authentication, install the Azure CLI, log in using the az login command, and add fedauth= to your connection URI. For example:

sqlserver://my-database-endpoint.database.windows.net:1433?database=my-database-name&fedauth=ActiveDirectoryDefault
  1. Build and run the C++ program:

    Using Make:

    pixi run make
    ./mssql_demo

    Or using CMake:

    pixi run cmake -B build
    pixi run cmake --build build
    ./build/mssql_demo

Clean up

  1. Clean build artifacts:

    Using Make:

    pixi run make clean

    Using CMake:

    rm -rf build
  2. Stop the Docker container running SQL Server:

    docker stop mssql
    docker rm mssql