Batchverarbeitung

SQLite unterstützt die Batchverarbeitung von SQL-Anweisungen nicht nativ in einem einzigen Befehl. Da es aber kein Netzwerk gibt, würde es trotzdem nicht wirklich helfen, die Leistung zu verbessern. Microsoft.Data.Sqlite implementiert jedoch die Batchverarbeitung von Anweisungen als Benutzerfreundlichkeit, damit sie sich eher wie andere ADO.NET Anbieter verhält.

Durch Aufrufen von DbCommand.ExecuteReader werden so lange Anweisungen ausgeführt, bis die erste Anweisung Ergebnisse zurückgibt. Durch das Aufrufen von DbDataReader.NextResult wird die Ausführung von Anweisungen fortgesetzt, bis die nächste Anweisung Ergebnisse zurückgibt oder bis das Ende des Befehlssatzes erreicht ist. Rufen Sie DbDataReader.Dispose oder Close auf, um die verbleibenden Anweisungen auszuführen, die noch nicht durch NextResult() verarbeitet wurden. Wenn Sie einen Datenleser nicht löschen, versucht der Finalizer, die verbleibenden Anweisungen auszuführen, aber alle aufgetretenen Fehler werden ignoriert. Daher ist es wichtig, bei der Verwendung von Batches DbDataReader-Objekte freizugeben.

// Batch two SELECT statements into a single command
var command = connection.CreateCommand();
command.CommandText =
@"
    SELECT *
    FROM blog;

    SELECT *
    FROM post;
";
using (var reader = command.ExecuteReader())
{
    // Read the first result set
    while (reader.Read())
    {
        Console.WriteLine($"Blog {reader["id"]}: {reader["name"]}");
    }

    // Read the second result set
    reader.NextResult();
    while (reader.Read())
    {
        Console.WriteLine($"Post {reader["id"]}: {reader["title"]}");
    }
}

Siehe auch