Connect an application
This page documents the preview version (v2.21). Preview includes features under active development and is for development and testing only. For production, use the stable version (v2024.1). To learn more, see Versioning.
Prerequisites
This tutorial assumes that you have:
- installed YugabyteDB, created a universe and are able to interact with it using the YCQL shell. If not, follow these steps in Quick start.
- installed Scala version 2.12 or later.
- installed sbt 1.3.8 or later.
sbt
To build a Scala application using the Yugabyte Java Driver for YCQL, you must add the following sbt
(Scala build tool) dependency to your application:
libraryDependencies += "com.yugabyte" % "cassandra-driver-core" % "3.8.0-yb-5"
Create the sbt build file
Create a sbt build file build.sbt
and copy the following content into it.
name := "YBCqlHelloWorld"
version := "1.0"
scalaVersion := "2.12.11"
scalacOptions := Seq("-unchecked", "-deprecation")
// https://mvnrepository.com/artifact/com.yugabyte/cassandra-driver-core
libraryDependencies += "com.yugabyte" % "cassandra-driver-core" % "3.8.0-yb-5"
Write a sample Scala application
Copy the following contents into the file YBCqlHelloWorld.scala
.
package com.yugabyte.sample.apps
import com.datastax.driver.core.Cluster
import com.datastax.driver.core.ResultSet
import com.datastax.driver.core.Row
import com.datastax.driver.core.Session
object YBCqlHelloWorld {
def main(args: Array[String]): Unit = {
try {
// Create a Cassandra client.
val cluster = Cluster.builder.addContactPoint("127.0.0.1").build
val session = cluster.connect
// Create keyspace 'ybdemo' if it does not exist.
val createKeyspace = "CREATE KEYSPACE IF NOT EXISTS ybdemo;";
val createKeyspaceResult = session.execute(createKeyspace);
println("Created keyspace ybdemo");
// Create table 'employee' if it does not exist.
val createTable = """
CREATE TABLE IF NOT EXISTS ybdemo.employee (
id int PRIMARY KEY,
name varchar,
age int,
language varchar
);
"""
val createResult = session.execute(createTable)
println("Created table employee")
// Insert a row.
val insert = """
INSERT INTO ybdemo.employee
|(id, name, age, language)
|VALUES
|(1, 'John', 35, 'Scala');
""".trim.stripMargin('|').replaceAll("\n", " ")
val insertResult = session.execute(insert)
println(s"Inserted data: ${insert}")
// Query the row and print out the result.
val select = """
SELECT name, age, language
FROM ybdemo.employee
WHERE id = 1;
"""
val rows = session.execute(select).all
val name = rows.get(0).getString(0)
val age = rows.get(0).getInt(1)
val language = rows.get(0).getString(2)
println(
s"""
Query returned ${rows.size}
|row: name=${name},
|age=${age},
|language=${language}
""".trim.stripMargin('|').replaceAll("\n", " ")
)
// Close the client.
session.close
cluster.close
} catch {
case e: Throwable => println(e.getMessage)
}
} // def main
} // object YBCqlHelloWorld
Build and run the application
To build the application, just run the following command.
$ sbt compile
To run the program, run the following command.
$ sbt run
You should see the following as the output.
Created keyspace ybdemo
Created table employee
Inserted data: INSERT INTO ybdemo.employee (id, name, age, language) VALUES (1, 'John', 35, 'Scala');
Query returned 1 row: name=John, age=35, language=Scala