Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

パラメータ情報を付加したCommandTextを取得する拡張メソッド

パラメータ情報を付加したCommandTextを取得する拡張メソッドを定義すると便利です。
SQLをログ出力するケースで使用します。(2012/02/11 読者さんからの指摘で追記)

using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;

namespace DataAccess
{
    internal static class SqlCommandExtensions
    {
        /// <summary>
        /// パラメータ情報を付加したCommandTextを取得します。
        /// </summary>
        /// <param name="self">SqlCommandのインスタンス</param>
        /// <returns>パラメータ情報を付加したCommandText</returns>
        public static string CommandTextWithParameters(this SqlCommand self)
        {
            StringBuilder commandTextBuilder = new StringBuilder(self.CommandText);
            foreach(SqlParameter p in self.Parameters) {
                commandTextBuilder.AppendFormat(", {0} = {1}", p.ParameterName, p.Value);
            }
            return commandTextBuilder.ToString();
        }
    }
}