|
.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などからデータをコピー&ペーストしてソース・コード化する際などに役に立つので、いろいろと試してみてほしい。
カテゴリ:Visual Studio .NET 処理対象:IDE
カテゴリ:Visual Studio 2005 処理対象:IDE
カテゴリ:Visual Studio 2008 処理対象:IDE |
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間