Dávkování

SQLite nativně nepodporuje dávkové příkazy SQL do jednoho příkazu. Ale protože není zapojena žádná síť, stejně by to opravdu výkonu nepomohlo. Microsoft.Data.Sqlite však implementuje dávkování příkazů pro usnadnění, aby se choval více jako ostatní poskytovatelé ADO.NET.

Při volání DbCommand.ExecuteReaderse příkazy spouštějí až do prvního příkazu, který vrací výsledky. Volání DbDataReader.NextResult pokračuje v provádění příkazů, dokud následující nevrátí výsledky nebo dokud nedosáhne konce dávky. Volání DbDataReader.Dispose nebo Close způsobuje spuštění všech zbývajících příkazů, které nebyly spotřebovány NextResult(). Pokud čtečku dat neodeberete, finalizátor se pokusí provést zbývající příkazy, ale všechny chyby, na které dojde, se ignorují. Z tohoto důvodu je důležité vyhodit DbDataReader objekty při použití dávek.

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

Viz také