Java 云扳手结果集获取长度

Java 云扳手结果集获取长度,java,google-cloud-spanner,Java,Google Cloud Spanner,我有以下代码: 问题: 我想使用see-if-resultSet的长度严格来说是1 尝试解决方案:resultSet.getStats.getRowCountExact==1 但是: 我不知道如何在计划或概要文件模式下执行查询,我的Java项目中是否有某种文件允许我声明这一点,或者Cloud Paner上的设置 如果有人对我的问题有任何想法,我也愿意接受其他解决方案,但我不确定还有什么其他方法可以做。请查看上面的链接。不幸的是,您试图做的事情无法通过查看结果集的统计信息来实现 您可以通过调用方法

我有以下代码:

问题: 我想使用see-if-resultSet的长度严格来说是1

尝试解决方案:resultSet.getStats.getRowCountExact==1

但是:

我不知道如何在计划或概要文件模式下执行查询,我的Java项目中是否有某种文件允许我声明这一点,或者Cloud Paner上的设置


如果有人对我的问题有任何想法,我也愿意接受其他解决方案,但我不确定还有什么其他方法可以做。请查看上面的链接。

不幸的是,您试图做的事情无法通过查看结果集的统计信息来实现

您可以通过调用方法DatabaseClientanalyzeQueryStatement QueryAnalyzeMode在概要文件或计划模式下执行查询。根据您的示例,看起来是这样的:

静态无效queryDatabaseClient dbClient{ 尝试结果集结果集= 数据库客户端 .singleUse//对Cloud扳手执行单个读取或查询。 .analyzeQueryStatement.of Select SingerId、AlbumId、Albums中的AlbumTitle、QueryAnalyzeMode.PROFILE{ 而resultSet.next{ System.out.printf %d%d%s\n,resultSet.getLong0,resultSet.getLong1,resultSet.getString2; } } } 但是:只有当您使用了整个结果集,即ResultSetnext方法返回false时,结果集的统计信息才可用。因此,您不能在使用结果集中的记录数之前进行检查


实现您想要做的事情的最好方法是执行SELECT COUNT*FROM。。。首先查询,然后在此基础上确定是否也要执行第二个查询。

不幸的是,通过查看结果集的统计信息无法实现您要执行的操作

您可以通过调用方法DatabaseClientanalyzeQueryStatement QueryAnalyzeMode在概要文件或计划模式下执行查询。根据您的示例,看起来是这样的:

静态无效queryDatabaseClient dbClient{ 尝试结果集结果集= 数据库客户端 .singleUse//对Cloud扳手执行单个读取或查询。 .analyzeQueryStatement.of Select SingerId、AlbumId、Albums中的AlbumTitle、QueryAnalyzeMode.PROFILE{ 而resultSet.next{ System.out.printf %d%d%s\n,resultSet.getLong0,resultSet.getLong1,resultSet.getString2; } } } 但是:只有当您使用了整个结果集,即ResultSetnext方法返回false时,结果集的统计信息才可用。因此,您不能在使用结果集中的记录数之前进行检查

实现您想要做的事情的最好方法是执行SELECT COUNT*FROM。。。首先查询,然后根据该查询确定是否也要执行第二个查询

static void query(DatabaseClient dbClient) {
  try (ResultSet resultSet =
      dbClient
          .singleUse() // Execute a single read or query against Cloud Spanner.
          .executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) {
    if (resultSet is of size 1) { do something }
    while (resultSet.next()) {
      System.out.printf(
          "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2));
    }
  }
}