Utiliser le pilote ADO.NET Spanner

ADO.NET est une interface générique permettant d'accéder aux sources de données pour .NET. Pour utiliser ADO.NET avec votre application, utilisez le pilote Spanner ADO.NET.

Le pilote SpannerADO.NET est compatible avec les bases de données utilisant les dialectes GoogleSQL et PostgreSQL.

Installer le pilote Spanner ADO.NET

Pour utiliser le pilote Spanner ADO.NET dans votre application, ajoutez le package suivant à votre projet .NET :

  Google.Cloud.Spanner.DataProvider

Utiliser le pilote Spanner ADO.NET

Pour créer une connexion ADO.NET à une base de données Spanner, créez un SpannerConnectionStringBuilder avec un nom de base de données complet comme chaîne de connexion :

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)}");
    }
}

Pour en savoir plus, consultez le dépôt GitHub du pilote Spanner ADO.NET.

Fonctionnalités compatibles

Le répertoire d'exemples de code du pilote Spanner ADO.NET contient des exemples prêts à l'emploi pour les fonctionnalités Spanner couramment utilisées.

Conseils relatifs aux performances

Pour obtenir les meilleures performances possibles lorsque vous utilisez le pilote Spanner ADO.NET, suivez ces bonnes pratiques :

Étape suivante