Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
SqLite nie obsługuje natywnie dzielenia na partie instrukcji SQL w jednym poleceniu. Ale ponieważ nie ma żadnej sieci, to i tak nie wpłynęłoby na wydajność. Microsoft.Data.Sqlite implementuje jednak przetwarzanie wsadowe instrukcji jako wygodę, aby zachowywać się bardziej jak inni dostawcy ADO.NET.
Podczas wywoływania funkcji DbCommand.ExecuteReader, instrukcje są wykonywane aż do pierwszej, która zwraca wyniki. Wywołanie DbDataReader.NextResult kontynuuje wykonywanie instrukcji aż do napotkania takiej, która zwraca wyniki, lub do osiągnięcia końca partii. Wywołanie DbDataReader.Dispose lub Close powoduje wykonanie wszelkich pozostałych instrukcji, które nie zostały zużyte przez NextResult(). Jeśli czytnik danych nie zostanie usunięty, finalizator spróbuje wykonać pozostałe instrukcje, ale wszelkie napotkane błędy zostaną zignorowane. W związku z tym ważne jest, aby usuwać DbDataReader obiekty podczas korzystania z partii.
// 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"]}");
}
}