Usa el controlador ADO.NET de Spanner

ADO.NET es una interfaz genérica para acceder a fuentes de datos para .NET. Para usar ADO.NET con tu aplicación, usa el controlador de ADO.NET de Spanner.

El controlador SpannerADO.NET admite bases de datos con dialecto de GoogleSQL y bases de datos con dialecto de PostgreSQL.

Instala el controlador de ADO.NET de Spanner

Para usar el controlador ADO.NET de Spanner en tu aplicación, agrega el siguiente paquete a tu proyecto de .NET:

  Google.Cloud.Spanner.DataProvider

Usa el controlador ADO.NET de Spanner

Para crear una conexión de ADO.NET a una base de datos de Spanner, crea un SpannerConnectionStringBuilder con un nombre de base de datos completo como cadena de conexión:

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

Para obtener más información, consulta el repositorio de GitHub del controlador ADO.NET de Spanner.

Funciones admitidas

El directorio de código de ejemplos del controlador ADO.NET de Spanner contiene ejemplos listos para ejecutar de las funciones de Spanner de uso frecuente.

Sugerencias para un mejor rendimiento

Para obtener el mejor rendimiento posible cuando uses el controlador ADO.NET de Spanner, sigue estas prácticas recomendadas:

¿Qué sigue?

  • Obtén más información sobre el uso de Spanner con los ejemplos de código del controlador de ADO.NET.
  • Obtén más información sobre ADO.NET.
  • Presenta un problema en GitHub para informar un error o una solicitud de función, o para hacer una pregunta sobre el controlador de Spanner ADO.NET.