2012-01-10 13 views
4

データベースサーバーに多数のクエリを作成するC#コンソールアプリケーションがあります。C#アプリケーション内でSQLクエリを書式設定する適切な方法

私はSQLを頻繁に変更する必要があり、毎回SQLを再フォーマットしなくても、SQLエディタからC#ソースに単純にコピー/貼り付けしたいと考えています。

現在、SQLはすべて1行に...以下のようなものです:

OleDbDataAdapter da_ssm_servers = new OleDbDataAdapter(@"SELECT * FROM mytable ORDER BY Server;", connSSM); 

SQLは、など、テーブルの多くのはるかに長い上記よりJOINS

私はしたいと思います書式設定はしておきますが、実際には戻って各行の周りに引用符を付ける必要はありません。

推奨と例があれば誰でも気に入るはずです。

+0

SQLを分離するためにストアドプロシージャを使用する方が簡単です。 http://msdn.microsoft.com/en-us/library/ms345415.aspx – Stefan

+0

私は同意します。私はDB2を使用しています。これはシンプルなユーティリティー・アプリケーションであり、SPを使用することは私にとって過労です。さらに、DB2はあまりユーザーフレンドリーではありません。恐ろしい製品。 – user500741

答えて

7

私はこのようにそれを行う:

string sql = @" 
    SELECT * 
    FROM mytable 
    ORDER BY Server"; 
OleDbDataAdapter da_ssm_servers = new OleDbDataAdapter(sql, connSSM); 
+0

余分な間隔、パディングが違いますか?私はDB2を使用しており、SQL構文に非常に敏感であるようです。それを憎む。 – user500741

+0

これはdbに固有の可能性があります。 DB2に関する経験はありません。それを試してみてください。 – RedFilter

+0

このように私のSQL文もフォーマットします。 SQL Server 2000とSQL Server 2005に対してはうまく動作しますが、SQL Server 2008に対しては実行していませんが、余分な間隔を置いても効果はありません。 –

0

@構文を使用している限り、SQLの複数の行をうまく処理できます。例えば

string sql = @"select 
        colA, 
        colB, 
        colC 
       from 
        tableX 
        inner join tableY 
        on tableX.colA = tableY.colA 
       where 
        colB > 20;" 
2

私の推薦は、あなたのようなクエリを使用している離れアドホックから滞在し、ストアドプロシージャを利用することであろう。それはあなたの設計を切り離すだけでなく、呼び出しをストアドプロシージャ名と場合によってはパラメータに制限します。

ただし、アドホッククエリを使用する必要がある場合は、接頭辞@を付けると、各行を引用符で囲むことなく複数の行にまたがることができます。

+0

ありがとう - このアプリは、stufをファイルにダンプするためのシンプルなユーティリティアプリです。そのため、監査/変更の目的でSVNをチェックできます。 – user500741

0

あなたのコードは正常に動作するはずです。 @で文字列を始めると、逐語的な文字列が使用されます。改行と書式設定は保持され、各行を引用符で囲む必要はありません。終了引用符が必要です。

関連する問題