C#でのSQLの書き方
C#でSQLを書く際の記述方法をまとめます。
駄目な例
string sql =
"SELECT HOGE1 " +
"FROM HOGE_TABLE " +
"WHERE HOGE1 = :hoge ";
駄目な例としてよく挙がっている書き方です。
+での連結は連結する文字列の数が多いとパフォーマンスが下がるらしいです。
逆に言えば上記の例みたいに数回連結する程度なら+連結は有用です。
ただ、古いプロジェクトならともかく、
最近のプロジェクトで上記の書き方はあんまり見ない気がします。
ですので使わないほうが無難かもしれません。
StringBuilder sb = new StringBuilder();
sb.Append("SELECT HOGE1 ");
sb.Append("FROM HOGE_TABLE ");
sb.Append("WHERE HOGE1 = :hoge ");
よく見かける書き方がこれです。
僕がよくやらかすのが半角スペースの入れ忘れです。
SQLの一行目の文末にスペースが入っていますが、
このスペースがないとHOGE1とFROMがつながってしまいエラーが発生します。
こんな単純なことでけっこう時間を奪われることが多いので、
あんまり好きじゃない書き方です。
良さげな記述方法
StringBuilder sb = new StringBuilder();
sb.AppendLine("SELECT HOGE1 ");
sb.AppendLine("FROM HOGE_TABLE ");
sb.AppendLine("WHERE HOGE1 = :hoge ");
駄目な例のAppendをAppendLineにしただけです。
Appendと違い、AppendLineは改行してくれるので、
一行目の文末にスペースを入れなくてもエラーになりません。
ログなども改行してくれるので見やすいです。
string sql =
@"SELECT HOGE1
FROM HOGE_TABLE
WHERE HOGE1 = :hoge ";
逐語的文字列リテラルで書く方法です。
一緒に作業している後輩がめっちゃ勧めてきました。
ただif文とかで条件分岐する際には
結局StringBuilder.AppendLineを使っていたので僕としては好きじゃないです。
ログに一行で出てしまう欠点もあります。
結論
StringBuilder.AppendLineを使うのが良いような気がします。
ディスカッション
コメント一覧
まだ、コメントがありません