Spanner-ADO.NET-Treiber verwenden

ADO.NET ist eine generische Schnittstelle für den Zugriff auf Datenquellen für .NET. Wenn Sie ADO.NET mit Ihrer Anwendung verwenden möchten, nutzen Sie den ADO.NET-Treiber für Spanner.

Der SpannerADO.NET-Treiber unterstützt sowohl Datenbanken im GoogleSQL-Dialekt als auch Datenbanken im PostgreSQL-Dialekt.

ADO.NET-Treiber für Spanner installieren

Wenn Sie den Spanner-ADO.NET-Treiber in Ihrer Anwendung verwenden möchten, fügen Sie Ihrem .NET-Projekt das folgende Paket hinzu:

  Google.Cloud.Spanner.DataProvider

Spanner-ADO.NET-Treiber verwenden

Um eine ADO.NET-Verbindung zu einer Spanner-Datenbank herzustellen, erstellen Sie eine SpannerConnectionStringBuilder mit einem vollständig qualifizierten Datenbanknamen als Verbindungsstring:

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

Weitere Informationen finden Sie im GitHub-Repository für den Spanner ADO.NET-Treiber.

Unterstützte Features

Das Codeverzeichnis für Spanner ADO.NET-Treiberbeispiele enthält sofort ausführbare Beispiele für häufig verwendete Spanner-Funktionen.

Tipps für bessere Leistung

Wenn Sie den Spanner-ADO.NET-Treiber verwenden, sollten Sie die folgenden Best Practices beachten, um eine optimale Leistung zu erzielen:

Nächste Schritte

  • Codebeispiele für die Verwendung von Spanner mit dem ADO.NET-Treiber
  • ADO.NET
  • GitHub-Problem senden, um eine Funktionsanfrage oder einen Fehler zu melden oder eine Frage zum Spanner ADO.NET-Treiber zu stellen