次の方法で共有


バッチ処理

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

こちらも参照ください