C# で SQL Server に パラメタライズドクエリ を 実行する

0 件のコメント

セキュリティ上の対策として パラメタライズドクエリ (パラメタ化クエリ、パラメータクエリ等呼ばれています) を利用すると思います。 このパラメタライズドクエリ、言語やデータベースによって指定方法が異なるのが厄介。。

C# で SQL Server に対して パラメタライズドクエリ を利用する際は @パラメータ名 でパラメータ指定します。 Command を再利用する場合、パラメータが保存されたままとなるのでパラメータ指定するキー名が被らないように注意します。

サンプルコード

using System;
using System.Configuration;
using System.Data.SqlClient;

public void Insert1(string id, string password, string role)
{
    // 接続文字列の取得
    var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString;

    using (var connection = new SqlConnection(connectionString))
    using (var command = connection.CreateCommand())
    {
        try
        {
            // データベースの接続開始
            connection.Open();

            // SQLの準備
            command.CommandText = @"INSERT INTO T_USER (ID, PASSWORD, ROLE_NAME) VALUES (@ID, @PASSWORD, @ROLE_NAME)";
            command.Parameters.Add(new SqlParameter("@ID", id));
            command.Parameters.Add(new SqlParameter("@PASSWORD", password));
            command.Parameters.Add(new SqlParameter("@ROLE_NAME", role));

            // SQLの実行
            command.ExecuteNonQuery();
        }
        catch (Exception exception)
        {
            Console.WriteLine(exception.Message);
            throw;
        }
        finally
        {
            // データベースの接続終了
            connection.Close();
        }
    }
}