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

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

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

次のステップ