.NET TIPS

SQL文の文字列を手軽に作成するには?[VS 2008、VS 2005、VS.NET、C#、VB]

デジタルアドバンテージ 岸本 真二郎
2008/05/15

 アプリケーションでデータベースを利用する場合、ソース・コードにSQL文の文字列を直接記述することがあるが、それが複雑なSQL文だとかなりの行数になるため、次のように、複数の文字列定数(=文字列リテラル:「"」で囲んだ文字列)を(C#の場合は)「+」や(Visual Basicの場合は)「&」で連結させて分かりやすく記述する場合が多いだろう。

string sSQL =
  "SELECT CustomerID, CompanyName, ContactName " +
    "FROM Customers " +
    "WHERE CustomerID LIKE '%A'  " +
    "ORDER by CompanyName ";
Dim sSQL As String = _
  "SELECT CustomerID, CompanyName, ContactName " & _
    "FROM Customers " & _
    "WHERE CustomerID LIKE '%A'  " & _
    "ORDER by CompanyName ";
複数の文字列定数を連結させて作成するSQL文(上:C#、下:VB)

 本稿では、このような複数の文字列定数を連結させた記述のSQL文の文字列を手軽に作成する方法を紹介する。

 一般的に、SQL文をソース・コード上に記述する際には、データベース管理ツール(クエリアナライザやSQL Server Management Studio)などで事前に「正常に実行されるか」を検証・確認したものをコピー&ペーストで利用することが多いだろう。このとき、Visual Studioの「クイック置換」を用いると、簡単に上記のように文字定数化されたSQL文を作成できる。

 まずは、Visual StudioのIDEのコード・エディタでソース・コード上の任意の場所(=SQL文の文字列を作成したい場所)を開き、そこにデータベース管理ツールで作成したSQL文をコピー&ペーストする。

SELECT CustomerID, CompanyName, ContactName
FROM Customers
WHERE CustomerID LIKE '%A'
ORDER by CompanyName
ソース・コード上にコピー&ペーストするSQL文の例

 次に、先ほどペーストしたSQL文を範囲選択して、メニュー・バーから[編集]−[検索と置換]−[クイック置換]を選択して、次の画面の[検索と置換]ダイアログの[クイック置換]ビューを開く。

範囲選択されたSQL文と[検索と置換]ダイアログ
SQL文の文字列を手軽に作成するのに「クイック置換」を活用する。
  先ほどペーストしたSQL文を範囲選択する。
  [検索と置換]ダイアログの[検索する文字列]に「{.+}」を入力する。
  [置換後の文字列]に(C#の場合は)「"\1 " +」もしくは(VBの場合は)「"\1 " & _」を入力する。
  [検索対象]コンボボックスで「選択した部分」を指定する。
  [+]をクリックして[検索オプション]を展開する。
  [条件]チェックボックスにチェックを入れ、その下のコンボボックスで「正規表現」を選択する。
  [すべて置換]ボタンをクリックする。

 [検索する文字列]には「{.+}」を入力し、[置換後の文字列]に(C#の場合は)「"\1 " +」もしくは(VBの場合は)「"\1 " & _」を入力する。[+]をクリックして[検索オプション]を展開して、[条件]チェックボックスにチェックを入れ、その下のコンボボックスで「正規表現」を選択する。

 最後に[すべて置換]をクリックすると、選択された領域が「"」ダブルクォーテーションで囲まれた複数の文字定数が(C#の場合は)「+」や(VBの場合は)「&」で連結された文字列に置換される。後は残念ながら手作業になるが、この先頭に(C#の場合は)「string sSQL =」や(VBの場合は)「Dim sSQL As String = _」を追加し、末尾にある不要な(C#の場合は)「 +」や(VBの場合は)「 & _」を削除し、(C#の場合のみ)行の終わりを示す「;」を追加すればよい。

 以上でSQL文の文字列の作成は完了だ。締めくくりとして正規表現の内容を簡単に説明しておこう。

 [検索する文字列]では、正規表現による「{.+}」(=1文字以上の繰り返し)という記述を使って1行分を取得して、これを「\1」という変数に展開している。

 [置換後の文字列]では、その変数(\1)に格納された1行を文字列定数とするために、置換文字列の両端に「"」を付け加え、(C#の場合は)文字列定数が連続することを表す「 +」もしくは(VB.NETの場合は)「 _」を付加している。なお、文字列定数を連結した際に、前後の行の文字がつながってしまわないように、変数(\1)の後に空白( )を追加している(最終的に「"\1 "」となる)。

 本TIPSで示したように、クイック置換の活用は意外と使える。置換後の文字列を工夫することで、大量の初期値を持つような配列や、Excelなどからデータをコピー&ペーストしてソース・コード化する際などに役に立つので、いろいろと試してみてほしい。End of Article

カテゴリ:Visual Studio .NET 処理対象:IDE
カテゴリ:Visual Studio 2005 処理対象:IDE
カテゴリ:Visual Studio 2008 処理対象:IDE

この記事と関連性の高い別の.NET TIPS
Visual Studioで複数ファイルの検索/置換を行うには?
正規表現を使って文字列を置換するには?[C#/VB]
文字と文字列を変換するには?
正規表現のパターン内にコメント文を記述するには?
文字列から特定の文字列を取り除くには?[C#、VB]]
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間