You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中使用自定义凭据执行Google Spanner查询?

在C#中使用自定义凭据连接Google Spanner并执行查询

核心说明

SpannerClient 没有公开直接接收连接字符串和凭据的构造函数,必须通过 SpannerClientBuilder 配置自定义凭据并构建客户端实例,以下是具体实现步骤:

步骤1:安装依赖NuGet包

确保项目已安装 Google.Cloud.Spanner.Client 包(建议使用最新稳定版)。

步骤2:加载自定义JSON凭据

从JSON字符串加载凭据,并添加Spanner所需的权限范围:

string jsonCredentialContent = "你的服务账号JSON凭据内容";
var credentials = GoogleCredential.FromJson(jsonCredentialContent)
    .CreateScoped(SpannerClient.DefaultScopes);

步骤3:构建SpannerClient实例

方式一:通过项目/实例/数据库ID配置

var clientBuilder = new SpannerClientBuilder
{
    ProjectId = "你的Google Cloud项目ID",
    InstanceId = "Spanner实例ID",
    DatabaseId = "目标数据库ID",
    Credentials = credentials
};
SpannerClient client = clientBuilder.Build();

方式二:通过连接字符串配置

如果习惯使用连接字符串,格式为 Data Source=projects/{projectId}/instances/{instanceId}/databases/{databaseId},配置方式如下:

string connectionString = "Data Source=projects/你的项目ID/instances/你的实例ID/databases/你的数据库ID";
var clientBuilder = new SpannerClientBuilder
{
    ConnectionString = connectionString,
    Credentials = credentials
};
SpannerClient client = clientBuilder.Build();

步骤4:执行查询并处理结果

使用 CreateSelectCommand 创建查询命令,然后读取结果:

using var queryCmd = client.CreateSelectCommand("SELECT SingerId, AlbumId, AlbumTitle FROM Albums");
using var dataReader = await queryCmd.ExecuteReaderAsync();

while (await dataReader.ReadAsync())
{
    long singerId = dataReader.GetInt64(0);
    long albumId = dataReader.GetInt64(1);
    string albumTitle = dataReader.GetString(2);
    // 此处添加数据处理逻辑
}

注意事项

  • 确保你的服务账号JSON凭据拥有Spanner数据库的读取权限(如 roles/spanner.databaseReader)。
  • 若使用异步方法,需确保方法标记为 async 并正确处理 await。

内容的提问来源于stack exchange,提问作者Spanners

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:18:24