LoginSignup
31
36

More than 5 years have passed since last update.

VB.NET でヒアドキュメント風

Posted at

SQL文をVB.NETコード内で直接記述したいとき、

(1)
Dim query = _
    "select  *" & vbLf & _
    "from    hoge" & vbLf & _
    "where   a=1" & vbLf & _
    "and     b in('1','2','3')" & vbLf & _
    "order by" & vbLf & _
    "        a,b,c"

こんな書き方をしてませんか?
面倒ですよね。
ヒアドキュメント風にしてみましょう。

(2)
Dim query = <Query>
    select  *
    from    hoge
    where   a=1
    and     b in('1','2','3')
    order by
            a,b,c
    </Query>.Value.Trim()

スッキリしました。
これはXMLリテラルを利用しています。
そのため、"<" や ">" が含まれる場合はエラーになってしまいます。
もうちょっと工夫してみましょう。

(3)
Dim query = <Query><![CDATA[
    select  *
    from    hoge
    where   a=1
    and     b<>1
    order by
            a,b,c
]]></Query>.Value.Trim()

CDATAセクションを使うことで、"<" や ">" が含まれる場合も対応できます。
"]]>" という文字列が含まれる場合はこのやり方でもエラーになってしまいますが、
SQL文などを扱う分にはほぼ問題にならないでしょう。

31
36
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
36