私が偏っていると言って始めましょう。私はすべての状況下で動的SQLが嫌いです。つまり、このシナリオは動的SQLの優れたプラクティスと考えられていますか?この場合、動的SQLを使用しても問題ありませんか?
sqlDataSourceObject.SelectCommand = String.Concat(
"select top ", maxRows,
" col1, ",
" col2 as myData, ",
" '' as blah, ",
" col3 as Fromperson ",
" 'Corporate' as toPerson, ",
" Convert(char(11), orderDate) as orderDate, ",
" carrier, ",
sqlString1,
sqlString2,
sqlString3 + " AND areaCode = '" + currArea + "'"
);
このクエリは、sqlString1,2,3, or currArea
の値を変更し、異なるSqlDataSourceコントロールに対して再びそれを実行し、その後、一回実行されることがあります。
このコードは、私が読むのを怒らせます。その読みにくい、それはsqlString変数で変更することができます、私はコピーせずに実行することはできません/ SSMSに貼り付け、私は単一の変更を行うためにいくつかの変数を追跡する必要があります。
しかし、私は私が偏っていますので、私はあなたを求めています言ったように。 2001年にLINQの前に書かれたこのコードは、ストアドプロシージャやその他の技術と同様に良いものですが、一般的には良いプラクティスの観点からOKですか?
ない場合、あなたはそれを改善しているだろうか(何のLINQを覚えていない、これは2001です)。
StackOverflowのは、この質問のために良いかもしれないように見えます。また、あなたはかなり恐ろしいデータベース設計の決定に取り組んでいるようです。 –
それは1つの事のためのSQLインジェクション悪用でいっぱいです –
@ジャロッド・ロバソン - 訂正してくれてありがとう。私は、 "コンパイルされたSQL"は単にコードでコンパイルされたSQLだと思った。どうやらそれはそうではありません。 –