Batchbearbetning
SQLite har inte inbyggt stöd för batchbearbetning av SQL-instruktioner i ett enda kommando. Men eftersom det inte finns något nätverk inblandat skulle det inte riktigt hjälpa prestanda ändå. Microsoft.Data.Sqlite implementerar dock instruktionsbatchbearbetning som en bekvämlighet så att den fungerar mer som andra ADO.NET providers.
När du anropar DbCommand.ExecuteReaderkörs instruktioner upp till den första som returnerar resultat. Anropet DbDataReader.NextResult fortsätter att köra instruktioner till nästa som returnerar resultat eller tills det når slutet av batchen. Anropar DbDataReader.Dispose eller Close kör eventuella återstående instruktioner som inte har förbrukats av NextResult()
. Om du inte tar bort en dataläsare försöker slutföraren köra de återstående instruktionerna, men eventuella fel som den stöter på ignoreras. Därför är det viktigt att ta bort DbDataReader
objekt när du använder batchar.
// 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"]}");
}
}