2012-04-22 5 views
0

文字のエスケープを避けるためにパラメータを使用する方法の例をいくつか見てきました。パラメータの使用はSQLインジェクションに対して100%安全ですか?C#ASP.NET SQLパラメータ化

また、いくつかの基本的なクエリ(reguralyが使用されています)とパラメータの実装方法を教えてください。

私がここに来る前に検索したウェブサイトには、あまりにも複雑な例があります。次のように

+0

使用することができます。また、定期的に使用されるクエリはどういう意味ですか?データモデルに完全に依存します。 –

答えて

2

パラメータ化されたSQLクエリの基本的な例は次のとおりです。

SqlCommand command = new SqlCommand(@"select city from users where username = @username", conn); 
SqlParameter param = new SqlParameter(); 
param.ParameterName = "@username"; 
param.Value = "abc123" 
command.Parameters.Add(param); 

connはあなたが確立してきましたSqlConnectionオブジェクトです。

@usernameは、コマンド実行時に置換されるパラメータ名です。

abc123は、この例で示した作成済みのユーザー名です。

これは明らかに構成されたシナリオですが、その点が分かります。

0

短いバージョンとして、あなたは私が何が100%安全であることを述べることを躊躇し

SqlCommand command = new SqlCommand(@"select city from users where username = @username", conn); 
command.Parameters.AddWithValue("@username", "value"); 
+0

OKですが、 '.AddWithValue()'メソッドを使用すると、基本的にADO.NETに使用されているデータ型を推測するように指示します。しかし、時々、それはオフになっています。したがって、私はこれをお勧めしません。**データ型を明示的に**定義する方が良いですし、ADO.NETランタイムによって推測に任せてはいけません。 –

+0

'AddWithValue'のオーバーロードがあると思います。タイプを渡すことができます。 –

関連する問題