.NET の PrepareCommand の使用方法

.NET では、データベースコマンドをクエリーや更新処理で実行するために、PrepareCommand メソッドを使用します。

PrepareCommand メソッドの主な目的は、データベース アクセスのパフォーマンスを最適化することです。PrepareCommand メソッドを使用するまで、データベース コマンドを実行するたびに、ADO.NET はコマンド テキストをデータベース サーバーに送信して解析し、コンパイルします。これにより、同じコマンドを繰り返し実行する場合、解析およびコンパイル プロセスが繰り返され、パフォーマンスが低下します。

PrepareCommandメソッドを利用することで、コマンドを初めて実行するときにコマンドテキストをデータベースサーバに送信してパースやコンパイルを実施し、そのコンパイル済みの結果をキャッシュしておくことができます。それにより、以降同じコマンドを実行する際には、パースやコンパイル処理を再実施することなく、すでにコンパイル済みのコマンドをそのまま利用できるため、パフォーマンスが向上します。

PrepareCommandメソッドを使用する手順は次のとおりです。

  1. データベース接続オブジェクトとコマンドオブジェクトを作成し、接続文字列とコマンドテキストを設定する。
  2. Prepareメソッドを呼び出し、コマンドテキストをデータベースサーバに送信して構文解析とコンパイルを行います。
  3. コマンドパラメータの値を設定します。
  4. コマンドを実行する。

PrepareCommandメソッドを使用する例を以下に示します:

using System;
using System.Data.SqlClient;

public class Program
{
    private static string connectionString = "Data Source=serverName;Initial Catalog=databaseName;User ID=userName;Password=password";

    public static void Main()
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            string commandText = "SELECT * FROM Customers WHERE Country = @country";

            using (SqlCommand command = new SqlCommand(commandText, connection))
            {
                command.Parameters.AddWithValue("@country", "USA");

                command.Prepare();

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine(reader["CustomerID"] + " - " + reader["CompanyName"]);
                    }
                }
            }
        }
    }
}

上の例では SqlConnectionオブジェクトと SqlCommandオブジェクトを最初に作成し、接続文字列とコマンドテキストをそれぞれ設定している。その後、Prepareメソッドを呼び出してコマンドテキストをデータベースサーバーに送信し、解析とコンパイルが行われる。次に、AddWithValueメソッドを呼び出してコマンドパラメータの値を設定し、最後にコマンドを実行している。

bannerAds