DataStax C++ driver

Before using a DataStax driver, review Best practices for DataStax drivers and upgrade or install the latest supported driver for your language. For more details about supported software, see the DataStax Support Policy.

Upgrade your driver to a compatible version to connect to Astra DB databases. For more information, see the DataStax Driver Matrix.

Connect the C++ driver

  1. Create a database, and then set environment variables for database ID, region, and keyspace.

  2. Create an application token, and then set a token environment variable.

    The token.json has the following format:

    {
      "clientId": "CLIENT_ID",
      "secret": "CLIENT_SECRET",
      "token": "APPLICATION_TOKEN"
    }

    For authentication with the driver, you can use either clientId and secret or the literal string token and the AstraCS token value. If you are on an older driver version that doesn’t support token and AstraCS, then you might need to use clientId and secret.

  3. Download your database’s Secure Connect Bundle (SCB).

  4. Download the DataStax C++ driver and dependency packages for your platform. For other platforms, build the driver from the source code packages.

    Platform Driver Dependencies

    CentOS 6

    Download

    Download

    CentOS 7

    Download

    Download

    Ubuntu 14.04

    Download

    Download

    Ubuntu 16.04

    Download

    Download

    Ubuntu 18.04

    Download

    Download

    Windows

    Download

    Download

  5. Using the packages you downloaded, follow the installation instructions for your platform to install the DataStax C++ driver.

  6. Create a connect_database.c file in the main directory for your C++ project:

    cd my_project
    touch connect_database.c
  7. Copy the following connection code into the connect_database.c file:

    #include <cassandra.h>
    #include <stdio.h>
    
    int main(int argc, char* argv[]) {
         /* Setup and connect to cluster /
         CassCluster cluster = cass_cluster_new();
         CassSession* session = cass_session_new();
    
         /* Setup driver to connect to the cloud using the secure connection bundle /
         const char secure_connect_bundle = "PATH_TO_SCB";
         if (cass_cluster_set_cloud_secure_connection_bundle(cluster, secure_connect_bundle) != CASS_OK) {
           fprintf(stderr, "Unable to configure cloud using the secure connection bundle: %s\n",
                   secure_connect_bundle);
           return 1;
         }
    
         /* Set credentials provided when creating your database /
         cass_cluster_set_credentials(cluster, "clientID", "clientSecret");
    
         CassFuture connect_future = cass_session_connect(session, cluster);
    
         if (cass_future_error_code(connect_future) == CASS_OK) {
           /* Use the session to run queries /
         } else {
           / Handle error */
         }
    
         cass_future_free(connect_future);
         cass_cluster_free(cluster);
         cass_session_free(session);
    
         return 0;
       }

    Replace PATH_TO_SCB with the path to your database’s SCB zip file.

    Don’t use the cass_cluster_set_contact_points() and cass_cluster_set_ssl() methods in conjunction with the cass_cluster_set_cloud_secure_connection_bundle() method.

  8. Build and link your application against the DataStax C++ driver.

    • Linux or macOS

    • Windows

    For static linking, use cassandra_static.a.

    cc connect_database.c -I/path/to/cassandra.h -L/path/to/cassandra.so -lcassandra

    Include these libraries in your Microsoft Visual Studio project by adding them to the project’s properties under Configuration Properties/Linker/Input/Additional Dependencies.

    For static linking, use cassandra_static.lib.

    Link your application against cassandra.lib. Your application will also require `cassandra.dll to be in your runtime path.

  9. Add code to your script that queries your database. This code creates a CassStatement object to connect to your Astra DB database, runs a CQL query, and prints the output to the console.

    /* Build statement and execute query */
    const char_ query = "SELECT release_version FROM system.local";
    CassStatement* statement = cass_statement_new(query, 0);
    
    CassFuture* result_future = cass_session_execute(session, statement);
    
    if (cass_future_error_code(result_future) == CASS_OK) {
      /* Retrieve result set and get the first row */
      const CassResult_ result = cass_future_get_result(result_future);
      const CassRow* row = cass_result_first_row(result);
    
      if (row) {
        const CassValue* value = cass_row_get_column_by_name(row, "release_version");
    
        const char* release_version;
        size_t release_version_length;
        cass_value_get_string(value, &release_version, &release_version_length);
        printf("release_version: '%._s'\n", (int)release_version_length, release_version);
      }
    
        cass_result_free(result);
      } else {
        /_ Handle error _/
        const char_ message;
        size_t message_length;
        cass_future_error_message(result_future, &message, &message_length);
        fprintf(stderr, "Unable to run query: '%.*s'\n", (int)message_length, message);
      }
    
      cass_statement_free(statement);
      cass_future_free(result_future);

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2024 DataStax | Privacy policy | Terms of use

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com