- 題名: VBソース中のSQL文について
- 日時: 2009/04/16 14:23:10
- ID: 24412
- この記事の返信元:
- (なし)
- この記事への返信:
- [24414] Re[1]: VBソース中のSQL文について2009/04/16 22:19:35
- [24415] Re[1]: VBソース中のSQL文について2009/04/17 9:15:46
- ツリーを表示
> 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 ※ 実行していないので動作するよう自身で加工 して下さい。 以上。
■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
分類:[.NET]
お世話になります
まだVBを組み始めたばかりの初心者です。
VBの中に長いSQL文を入れると、横に広がって見ずらいのですが、
下手に改行しても構文エラーになってしまいます。
みなさんはSQL文を見やす工夫されていることはありますか?