C#でクエリを書く。
C#でクエリを書く方法はいろいろありますが、お勧めの方法を紹介します。
まず、コードを記載します。(訳あってクラス全体を記載しています。)
using System; using System.Text; namespace Run { class Program { static void Main(string[] args) { var query1 = String.Empty; query1 += "SELECT Code, Name"; query1 += "FROM Students"; query1 += "WHERE Code = @StudentCode"; var query2 = String.Empty + "SELECT Code, Name" + " FROM Students" + " WHERE Code = @StudentCode"; var query3 = new StringBuilder() .AppendLine("SELECT Code, Name") .AppendLine("FROM Students") .AppendLine("WHERE Code = @StudentCode").ToString(); var query4 = @" SELECT Code, Name FROM Students WHERE Code = @StudentCode "; } } }
この中でお勧めの方法は最後の query3 です。その理由を紹介します。
クエリを簡単にコピペして実行できる。
クエリが正しいかどうかDBで確かめる際に簡単にコピペしてデバックできます。
パフォーマンスが良い。
query1/query2 の方法でクエリを組み立てるとパフォーマンスが良くありません。
Stringを += や + で組み立てると複数の文字列オブジェクトがガーベジコレクション対象になるヒープに作成されてしまいます。
もし、if文等で文字列を組み立てる場合は query3 のようにStringuBuilder()を使いましょう。
ただし、今回のような少量のコードであればパフォーマンスへの影響は殆ど無いと思います。
詳細は下記サイトを参考にして下さい。
StringとStringBuilderと、in C# - 亀岡的プログラマ日記
オブジェクト指向講座 スタック領域とヒープ領域|傲慢SE日記 ~30歳からの挑戦(TownSoft)~
バグが少ない。
よく見ると query1 にはSELECT句とFROM句の間に空白等がないためクエリはエラーになります。
見た目が良くないという方もいますが・・
query3 の場合だと頭が出ていて見た目が良くないとの意見もありますが、そういう方には「クエリが目立って逆に良いですよ!」等、上手に説得しましょう。
頭が出ないように空白を入れたりするのは無駄な作業なだけ避けたいところです。