セキュリティ上の対策として パラメタライズドクエリ (パラメタ化クエリ、パラメータクエリ等呼ばれています) を利用すると思います。 このパラメタライズドクエリ、言語やデータベースによって指定方法が異なるのが厄介。。
C# で SQL Server に対して パラメタライズドクエリ を利用する際は @パラメータ名
でパラメータ指定します。
Command
を再利用する場合、パラメータが保存されたままとなるのでパラメータ指定するキー名が被らないように注意します。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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 の フォロー」 お願いします!!