セキュリティ上の対策として パラメタライズドクエリ (パラメタ化クエリ、パラメータクエリ等呼ばれています) を利用すると思います。 このパラメタライズドクエリ、言語やデータベースによって指定方法が異なるのが厄介。。
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();
}
}
}
関連記事
C# を使って SQL Server に接続、操作する方法に関しては以下のような記事もあります。 あわせて参考に読んでいただけると理解が深まるハズ!
- SQL Server に 接続
- SQL Server に対して SELECT文 を 実行
- SQL Server に対して INSERT文 ・ UPDATE文 ・ DELETE文 を 実行
- SQL Server に対して パラメタライズドクエリ を 実行 ←この記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!