Spanner ADO.NET ドライバを使用する

ADO.NET は、.NET のデータソースにアクセスするための汎用インターフェースです。アプリケーションで ADO.NET を使用するには、Spanner ADO.NET ドライバを使用します。

SpannerADO.NET ドライバは、GoogleSQL 言語データベースと PostgreSQL 言語データベースの両方をサポートしています。

Spanner ADO.NET ドライバをインストールする

アプリケーションで Spanner ADO.NET ドライバを使用するには、次のパッケージを .NET プロジェクトに追加します。

  Google.Cloud.Spanner.DataProvider

Spanner ADO.NET ドライバを使用する

Spanner データベースへの ADO.NET 接続を作成するには、接続文字列として完全修飾されたデータベース名を使用して SpannerConnectionStringBuilder を作成します。

GoogleSQL

/// <summary>
/// Create an ADO.NET connection to a Spanner database.
/// </summary>
/// <param name="connectionString">
/// A connection string in the format
/// 'Data Source=projects/my-project/instances/my-instance/databases/my-database'.
/// </param>
public static async Task CreateConnection(string connectionString)
{
    // Use a SpannerConnectionStringBuilder to construct a connection string.
    // The SpannerConnectionStringBuilder contains properties for the most
    // used connection string variables.
    var builder = new SpannerConnectionStringBuilder(connectionString)
    {
        // Sets the default isolation level that should be used for all
        // read/write transactions on this connection.
        DefaultIsolationLevel = IsolationLevel.RepeatableRead,

        // The Options property can be used to set any connection property
        // as a key-value pair.
        Options = "statement_cache_size=2000"
    };

    await using var connection = new SpannerConnection(builder.ConnectionString);
    await connection.OpenAsync();

    await using var command = connection.CreateCommand();
    command.CommandText = "SELECT 'Hello World' as Message";
    await using var reader = await command.ExecuteReaderAsync();
    while (await reader.ReadAsync())
    {
        Console.WriteLine($"Greeting from Spanner: {reader.GetString(0)}");
    }
}

PostgreSQL

/// <summary>
/// Create an ADO.NET connection to a Spanner PostgreSQL database.
/// </summary>
/// <param name="connectionString">
/// A connection string in the format
/// 'Data Source=projects/my-project/instances/my-instance/databases/my-database'.
/// </param>
public static async Task CreateConnection(string connectionString)
{
    // Use a SpannerConnectionStringBuilder to construct a connection string.
    // The SpannerConnectionStringBuilder contains properties for the most
    // used connection string variables.
    var builder = new SpannerConnectionStringBuilder(connectionString)
    {
        // Sets the default isolation level that should be used for all
        // read/write transactions on this connection.
        DefaultIsolationLevel = IsolationLevel.RepeatableRead,

        // The Options property can be used to set any connection property
        // as a key-value pair.
        Options = "statement_cache_size=2000"
    };

    await using var connection = new SpannerConnection(builder.ConnectionString);
    await connection.OpenAsync();

    await using var command = connection.CreateCommand();
    command.CommandText = "SELECT 'Hello World' as Message";
    await using var reader = await command.ExecuteReaderAsync();
    while (await reader.ReadAsync())
    {
        Console.WriteLine($"Greeting from Spanner: {reader.GetString(0)}");
    }
}

詳細については、Spanner ADO.NET ドライバの GitHub リポジトリをご覧ください。

サポートされている機能

Spanner ADO.NET ドライバ サンプルコード ディレクトリには、よく使用される Spanner 機能の実行可能なサンプルが含まれています。

パフォーマンスのヒント

Spanner ADO.NET ドライバを使用するときに可能な限り高いパフォーマンスを実現するには、次のベスト プラクティスに従ってください。

次のステップ

  • ADO.NET ドライバで Spanner を使用する方法を確認する。コードの例をご覧ください。
  • ADO.NET の詳細を確認する。
  • GitHub の問題を登録して、機能リクエストやバグを報告するか、Spanner ADO.NET ドライバについて質問する。