DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VBソース中のSQL文について

環境/言語:[開発pc xp]
分類:[.NET]

お世話になります

まだVBを組み始めたばかりの初心者です。

VBの中に長いSQL文を入れると、横に広がって見ずらいのですが、
下手に改行しても構文エラーになってしまいます。

みなさんはSQL文を見やす工夫されていることはありますか?
> VBの中に長いSQL文を入れると、横に広がって見ずらいのですが、
> 下手に改行しても構文エラーになってしまいます。
> 
> みなさんはSQL文を見やす工夫されていることはありますか?

  あくまで文字列の足し算で解決できますヨ!

  Dim szSql as String

    szSql = "select "
    szSql += "* "
    szSql += "from "
    szSql += "HogeHoge "
    szSql += "where "
    szSql += "hoge = 1"

※ 1行に書かれているSQL文を分割する際、語句と語句の間の
  空白を残さないと当然構文エラーになります。

  ちょっと変わった方法

        Using con As SqlConnection = New SqlConnection("hogehogehoge")
            bRet = False
            Try
                con.Open()
                bRet = True
            Catch ex As Exception
                bRet = False
            End Try

            If bRet Then
                Dim szSql As StringBuilder

                szSql = New StringBuilder

                With szSql
                    .Length = 0
                    .Append("select ")
                    .Append("* ")
                    .Append("form ")
                    .Append("HogeHoge ")
                    .Append("where ")
                    .Append("Hpge1=1 and ")
                    .Append("Hoge2=2")
                End With

                Using ds As DataSet = New DataSet
                    Using ad As SqlDataAdapter = New SqlDataAdapter
                        Using cmd As SqlCommand = con.CreateCommand
                            With cmd
                                .CommandType = CommandType.Text
                                .CommandTimeout = con.ConnectionTimeout
                                .CommandText = szSql.ToString
                            End With

                            ad.SelectCommand = cmd

                            Try
                                ad.Fill(ds, "HogeHoge")
                                bRet = True
                            Catch ex As Exception
                                bRet = False
                            End Try
                        End Using
                    End Using

                    If bRet Then
                        ' ds 使って処理・・・
                    End If
                End Using

                con.Close()
            End If
        End Using

※ 実行していないので動作するよう自身で加工
  して下さい。

以上。
  • 題名: Re[1]: VBソース中のSQL文について
  • 著者: 魔界の仮面弁士
  • 日時: 2009/04/17 9:15:46
  • ID: 24415
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No24412に返信(RENさんの記事)
> VBの中に長いSQL文を入れると、横に広がって見ずらいのですが、
> 下手に改行しても構文エラーになってしまいます。

固定的な SQL の場合、ソースコード中に埋め込むのではなく、
型付 DataSet のデザイナから、TableAdapter 内に SQL を封じ込めたり、
あるいは、文字列リソースに SQL を格納するなどの方法をとっています。


また、動的に SQL を生成せねばならない場合には、
 SQL &= " GROUP BY 売上年月"
 SQL &= " ORDER BY 売上年月, 売上合計"
などのように、文字列連結で対応しています。
(実際には、StringBuilder を利用した SQL 生成用のヘルパクラスを作って
 動的生成させる仕組みとして実装していますが)


また、改行などを含める必要がある場合においては、
稀に下記のように記述することもあります。


Dim sql As String = <![CDATA[
  SELECT
     PostID,  -- 投稿No
     Poster,  -- 投稿者
     Title,   -- 題名
     Message  -- 本文
  FROM
     BBS
  WHERE
     BBSID = 'dobon.net'
]]>.Value

DOBON.NET | プログラミング道 | プログラミング掲示板