使用 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 和 mTLS。

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

连接网址注意事项

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

建立 Spanner Omni 连接

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

纯文本通信

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

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;usePlainText=true;isExperimentalHost=true";
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());
      }
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }

将身份验证令牌与 TLS 或 mTLS 搭配用于 Spanner Omni 端点时,请将 SPANNER_EXPERIMENTAL_HOST_AUTH_TOKEN 环境变量设置为 Spanner Omni CLI 生成的身份验证令牌的路径。对于不需要凭据的连接,请将此变量保留为未设置状态。 不建议客户端使用身份验证令牌,因为 Spanner Omni 生成的令牌会过期,并且需要使用 Spanner Omni CLI 手动续订。

TLS 连接

如需建立 TLS 连接,请按照 Java SDK TLS 说明中的说明,将 CA 证书添加到 Java 信任库,或在运行应用时直接传递该证书。在建立 TLS 连接时,JDBC 网址不需要任何其他参数:

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID?isExperimentalHost=true";

mTLS 连接

如需建立 mTLS 连接,JDBC 网址需要两个额外的参数:clientCertificateclientKey。这些参数必须分别指定客户端证书和客户端私钥的文件路径。客户端私钥必须采用 Java 兼容的格式,如 Java SDK mTLS 说明 中所述:

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