SQL を構築し、それを SQL Server データベースに対して実行する小さなヘルパー ライブラリを作成しています。
文字列を連結する代わりにパラメーター化されたクエリを使用するのが最善の方法であることはわかっていますが、データベースに対して実行されるすべてのクエリを人間が読める形式でログに記録する必要があるため、これはオプションではありません。管理者は、検索に使用された実際の値がwhere
句に含まれているかを自由に確認できます。
その文字列をクエリに入れて実行する前に、エスケープする必要があるすべての文字は何ですか?
一重引用符が必須であることは知っています'
が、他のことを気にする必要がありますか?
サンプルコードは次のとおりです。
var condition = new Condition();
var table = new PersonTable();
condition.Add(table.Name.IsEqualTo("John's"));
これはに変換されます
WHERE [dbo].[Person].[Name] = N'John''s'
私が方法でのみ受け入れ、シングルをエスケープする場合、どのように攻撃string
しますIsEqualTo
か?'
''
私の知る限り、SQL Server は'
文字列区切り記号のみを受け入れます。