使用 JDBC 驱动程序连接到 Spanner Omni

本文档介绍了如何使用 Spanner JDBC 驱动程序将 Java 应用连接到 Spanner Omni 并执行 SQL 语句。

Java 数据库连接 (JDBC) 是一种标准 Java API,可为应用提供与关系型数据库交互的一致方式。Spanner JDBC 驱动程序与 Spanner Omni 的搭配使用方式与 Spanner 相同。

通过使用 JDBC 驱动程序,您可以将标准 JDBC 兼容的工具和库与 Spanner Omni 搭配使用。

Spanner Omni JDBC 连接支持纯文本、TLS、带凭据的 TLS 和 mTLS。

如需了解详情,请参阅 Spanner 文档中的 JDBC 中的 Spanner 使用入门

准备工作

如需将 Spanner Omni 与 JDBC 驱动程序搭配使用,请使用 Spanner JDBC 驱动程序 2.41.0 版或更高版本。

如果您使用不含物料清单 (BOM) 的 Maven,请将以下代码添加到 pom.xml 文件依赖项中:

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner-jdbc</artifactId>
  <version>2.41.0</version>
</dependency>

连接网址注意事项

由于 Spanner Omni 不直接连接到Google Cloud 项目,因此 JDBC 连接网址中不需要 projects/name 组件。同样,由于每个 Spanner Omni 部署都有一个已创建的实例 (instances/default),因此 instances/name 组件是可选的。

如需将 JDBC 驱动程序连接到 Spanner Omni 而不是 Spanner,请将 ;type=omni 属性附加到连接网址。

建立 Spanner Omni 连接

以下示例展示了如何使用 Spanner JDBC 驱动程序为每种受支持的安全配置建立与 Spanner Omni 的连接:

纯文本

如需建立纯文本连接,请使用类似于以下内容的连接网址:

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;usePlainText=true;type=omni";
try (java.sql.Connection connection = DriverManager.getConnection(url)) {
  try (ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM Singers")) {
    while (rs.next()) {
      System.out.print(rs.getLong(1) + "\t");
      System.out.println(rs.getString(2));
    }
  }
} catch (Exception e) {
  System.out.println(e.getMessage());
}

TLS

如需建立 TLS 连接,请将 CA 证书添加到 Java 信任库,或在运行应用时指定自定义信任库,如配置 Java 信任库中所述。JDBC 网址不需要任何其他身份验证参数:

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;type=omni";

使用凭据的 TLS

如需通过用户名和密码身份验证建立 TLS 连接,请按照配置 Java 信任库中的说明将 CA 证书添加到 Java 信任库,并在 JDBC 网址中指定 usernamepassword 属性:

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;type=omni;username=USERNAME;password=PASSWORD";

mTLS

如需建立 mTLS 连接,请按照配置 Java 信任库中的说明将 CA 证书添加到 Java 信任库,并在 JDBC 网址中指定 clientCertificateclientKey 参数。客户端私钥必须采用符合 Java 标准的 PKCS#8 格式,如 Java SDK mTLS 说明中所述:

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;type=omni;clientCertificate=PATH_TO_CLIENT_CERT;clientKey=PATH_TO_CLIENT_KEY";