Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SQLite no admite de forma nativa instrucciones SQL de procesamiento por lotes en un solo comando. Pero porque no hay ninguna red implicada, realmente no ayudaría al rendimiento de todos modos. Sin embargo, Microsoft.Data.Sqlite implementa el procesamiento por lotes de instrucciones como comodidad para que se comporte más como otros proveedores de ADO.NET.
Al llamar a DbCommand.ExecuteReader, las instrucciones se ejecutan hasta la primera que devuelve resultados. La llamada a DbDataReader.NextResult sigue ejecutando instrucciones hasta llegar a la siguiente que devuelva resultados o hasta alcanzar el final del lote. Cuando se llama a DbDataReader.Dispose o Close, se ejecuta cualquier instrucción restante que NextResult() no haya usado. Si no elimina un lector de datos, el finalizador intenta ejecutar las instrucciones restantes, pero se omiten los errores que encuentre. Por este motivo, es importante eliminar DbDataReader objetos al usar lotes.
// 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"]}");
}
}