Configure a connection to Databricks using the Databricks JDBC Driver (Simba)

Note

This page applies to the Simba JDBC Driver (Legacy), versions below version 3. Databricks strongly recommends migrating to the Databricks JDBC Driver for JDBC connectivity. It includes improvements such as support for Unity Catalog metric views, transactions that span multiple SQL statements, stored procedures, faster large-result retrieval, and built-in client telemetry.

This page describes how to configure a connection to Azure Databricks using the Databricks JDBC Driver.

To configure a connection, combine the following settings into a JDBC connection URL or a programmatic collection of connection properties:

Connection URL format

JDBC connection URLs use the following format:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]

Java example

The following example shows how to configure connection properties in Java:

package org.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;

public class Main {
  public static void main(String[] args) throws Exception {
    Class.forName("com.databricks.client.jdbc.Driver");
    String url = "jdbc:databricks://" + System.getenv("DATABRICKS_SERVER_HOSTNAME") + ":443";
    Properties p = new java.util.Properties();
    p.put("httpPath", System.getenv("DATABRICKS_HTTP_PATH"));
    p.put("<setting1>", "<value1>");
    p.put("<setting2>", "<value2>");
    p.put("<settingN>", "<valueN>");
    try (Connection conn = DriverManager.getConnection(url, p)) {
      Statement stmt = conn.createStatement();
      try (ResultSet rs = stmt.executeQuery("<query>")) {
        ResultSetMetaData md = rs.getMetaData();
        String[] columns = new String[md.getColumnCount()];
        for (int i = 0; i < columns.length; i++) {
          columns[i] = md.getColumnName(i + 1);
        }
        while (rs.next()) {
          System.out.print("Row " + rs.getRow() + "=[");
          for (int i = 0; i < columns.length; i++) {
            if (i != 0) {
              System.out.print(", ");
            }
            System.out.print(columns[i] + "='" + rs.getObject(i + 1) + "'");
          }
          System.out.println(")]");
        }
      }
    }
    System.exit(0);
  }
}

Choose a connection URL or connection properties based on the requirements of your application, tool, or SDK.