SQLite では、SQL ステートメントをまとめて 1 つのコマンドにバッチ処理することはネイティブにサポートされていません。 しかし、ネットワークは関係しないので、とにかくパフォーマンスに役立つことはありません。 ただし、Microsoft.Data.Sqlite では、他の ADO.NET プロバイダーと同様に動作するように、ステートメントのバッチ処理を便利に実装します。
DbCommand.ExecuteReaderを呼び出すと、結果を返す最初のステートメントまでステートメントが実行されます。
DbDataReader.NextResult呼び出しは、結果を返す次のステートメント、またはバッチの末尾に達するまでステートメントの実行を続行します。
DbDataReader.DisposeまたはCloseを呼び出すと、NextResult()
によって使用されていない残りのステートメントが実行されます。 データ リーダーを破棄しない場合、ファイナライザーは残りのステートメントを実行しようとしますが、発生したエラーはすべて無視されます。 このため、バッチを使用するときは、 DbDataReader
オブジェクトを破棄することが重要です。
// 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"]}");
}
}
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET