Utilizzare il driver ADO.NET di Spanner

ADO.NET è un'interfaccia generica per l'accesso alle origini dati per .NET. Per utilizzare ADO.NET con la tua applicazione, utilizza il driver ADO.NET di Spanner.

Il driver SpannerADO.NET supporta sia i database con dialetto GoogleSQL sia quelli con dialetto PostgreSQL.

Installa il driver ADO.NET di Spanner

Per utilizzare il driver Spanner ADO.NET nella tua applicazione, aggiungi il seguente pacchetto al tuo progetto .NET:

  Google.Cloud.Spanner.DataProvider

Utilizzare il driver ADO.NET di Spanner

Per creare una connessione ADO.NET a un database Spanner, crea un SpannerConnectionStringBuilder con un nome di database completo come stringa di connessione:

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

Per maggiori informazioni, consulta il repository GitHub del driver ADO.NET di Spanner.

Funzionalità supportate

La directory del codice degli esempi del driver Spanner ADO.NET contiene esempi pronti per l'uso per le funzionalità di Spanner di uso comune.

Suggerimenti sulle prestazioni

Per ottenere le migliori prestazioni possibili quando utilizzi il driver Spanner ADO.NET, segui queste best practice:

Passaggi successivi