com.google.cloud.spanner.jdbc

## Class JdbcDriver

- java.lang.Object
- - com.google.cloud.spanner.jdbc.JdbcDriver

All Implemented Interfaces:
  Driver

    public class JdbcDriver
    extends Object
    implements Driver

JDBC `Driver` for Google Cloud Spanner.

Usage:

     String url = "jdbc:cloudspanner:/projects/my_project_id/"
                + "instances/my_instance_id/databases/my_database_name?"
                + "credentials=/home/cloudspanner-keys/my-key.json;autocommit=false";
     try (Connection connection = DriverManager.getConnection(url)) {
       try(ResultSet rs = connection.createStatement().executeQuery("SELECT SingerId, AlbumId, MarketingBudget FROM Albums")) {
         while(rs.next()) {
           // do something
         }
       }
     }

The connection that is returned will implement the interface `CloudSpannerJdbcConnection`. The JDBC connection URL must be specified in the following format:

     jdbc:cloudspanner:[//host[:port]]/projects/project-id[/instances/instance-id[/databases/database-name]][\?property-name=property-value[;property-name=property-value]*]?

The property-value strings should be url-encoded.

The project-id part of the URI may be filled with the placeholder DEFAULT_PROJECT_ID. This placeholder is replaced by the default project id of the environment that is requesting a connection.

The supported properties are:

- credentials (String): URL for the credentials file to use for the connection. If you do not specify any credentials at all, the default credentials of the environment as returned by `GoogleCredentials.getApplicationDefault()` is used.
- autocommit (boolean): Sets the initial autocommit mode for the connection. Default is true.
- readonly (boolean): Sets the initial readonly mode for the connection. Default is false.
- autoConfigEmulator (boolean): Automatically configure the connection to try to connect to the Cloud Spanner emulator. You do not need to specify any host or port in the connection string as long as the emulator is running on the default host/port (localhost:9010). The instance and database in the connection string will automatically be created if these do not yet exist on the emulator. This means that you do not need to execute any `gcloud` commands on the emulator to create the instance and database before you can connect to it.
- usePlainText (boolean): Sets whether the JDBC connection should establish an unencrypted connection to the server. This option can only be used when connecting to a local emulator that does not require an encrypted connection, and that does not require authentication.
- optimizerVersion (string): The query optimizer version to use for the connection. The value must be either a valid version number or `LATEST`. If no value is specified, the query optimizer version specified in the environment variable `SPANNER_OPTIMIZER_VERSION` is used. If no query optimizer version is specified in the connection URL or in the environment variable, the default query optimizer version of Cloud Spanner is used.
- oauthtoken (String): A valid OAuth2 token to use for the JDBC connection. The token must have been obtained with one or both of the scopes 'https://www.googleapis.com/auth/spanner.admin' and/or 'https://www.googleapis.com/auth/spanner.data'. If you specify both a credentials file and an OAuth token, the JDBC driver will throw an exception when you try to obtain a connection.
- retryAbortsInternally (boolean): Sets the initial retryAbortsInternally mode for the connection. Default is true. @see `CloudSpannerJdbcConnection.setRetryAbortsInternally(boolean)` for more information.
- minSessions (int): Sets the minimum number of sessions in the backing session pool. Defaults to 100.
- maxSessions (int): Sets the maximum number of sessions in the backing session pool. Defaults to 400.
- numChannels (int): Sets the number of gRPC channels to use. Defaults to 4.
- rpcPriority (String): Sets the priority for all RPC invocations from this connection. Defaults to HIGH.

### Constructor Summary

Constructors
Constructor and Description
`JdbcDriver()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`boolean` `acceptsURL(String url)`
`Connection` `connect(String url, Properties info)`
`static String` `getClientLibToken()`
`int` `getMajorVersion()`
`int` `getMinorVersion()`
`Logger` `getParentLogger()`
`DriverPropertyInfo[]` `getPropertyInfo(String url, Properties info)`
`boolean` `jdbcCompliant()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### JdbcDriver

    public JdbcDriver()

### Method Detail

#### getClientLibToken

    @InternalApi
    public static String getClientLibToken()

#### connect

    public Connection connect(String url,
                              Properties info)
                       throws SQLException

Specified by:
  `connect` in interface `Driver`
Throws:
  `SQLException`

#### acceptsURL

    public boolean acceptsURL(String url)

Specified by:
  `acceptsURL` in interface `Driver`

#### getPropertyInfo

    public DriverPropertyInfo[] getPropertyInfo(String url,
                                                Properties info)

Specified by:
  `getPropertyInfo` in interface `Driver`

#### getMajorVersion

    public int getMajorVersion()

Specified by:
  `getMajorVersion` in interface `Driver`

#### getMinorVersion

    public int getMinorVersion()

Specified by:
  `getMinorVersion` in interface `Driver`

#### jdbcCompliant

    public boolean jdbcCompliant()

Specified by:
  `jdbcCompliant` in interface `Driver`

#### getParentLogger

    public Logger getParentLogger()
                           throws SQLFeatureNotSupportedException

Specified by:
  `getParentLogger` in interface `Driver`
Throws:
  `SQLFeatureNotSupportedException`