2

StringBuilder.Append()VB.NETのメソッドを使用して、大きな SQL ステートメントを作成しています。SQL ステートメント全体を 1 つのAppend()ブロックに入れ、何らかの機能を使用して多数のAppend()ブロックを自動的に作成し、コードをクリーンアップしたいと考えています。

Append()Visual Studio 2008 と ReSharper 7 を使用していますが、手動でブロックを追加する以外にこれを行う方法が見つかりません。ReSharper のコードのクリーンアップは、驚くべきことに役に立ちませんでした。

これは可能ですか?

さらに明確にするために編集:

1 つの長い Append() を記述し、IDE または一部のプラグインで美的な目的のために複数の Append() に分割できるようにしたいと考えています。

例えば:

Dim sql As New StringBuilder

sql.Append("SELECT Condition1 AS ""THIS_NAME"", Condition2 AS ""THIS_OTHER_NAME"", Condition3 AS ""ANOTHER_NAME"", Condition4 AS ""ANOTHER_NAME"", Condition5 AS ""THIS_NAME"" FROM MY_TABLE WHERE Condition1 = 'ThisValue' AND Condition2 = 'ThisOtherValue' AND Condition3 = 'ThisOtherValue' AND Condition4 = 'AnotherValue' AND Condition5 = 'SomeOtherValue'")

上記の Append() は長く、あまり読みにくくなっています。ただし、SQL ステートメントを複数の Append ブロックに分割する場合、すべての構文を正しく取得するのが難しい場合があります。プラグインで次のように変換したいと思います。

sql.Append("SELECT Condition1 AS ""THIS_NAME"",")
sql.Append(" Condition2 AS ""THIS_OTHER_NAME"",")
sql.Append(" Condition3 AS ""ANOTHER_NAME"",")
sql.Append(" Condition4 AS ""ANOTHER_NAME"",")
sql.Append(" Condition5 AS ""THIS_NAME"",")
sql.Append(" FROM MY_TABLE"",")
sql.Append(" WHERE Condition1 = 'ThisValue'")

....など.. 正確にそのようにフォーマットする必要はありません。複数の Append ステートメントに分割するだけです。

4

2 に答える 2

1

あなたの質問に対する答えは、「いいえ、これに対する R# の機能はありません」です。

ただし、これが純粋に書式設定のためである場合、より適切な解決策は、文字列リテラルを複数の行に分散させることです。

同じことを達成するために、多数のメソッド呼び出しでコードを汚染したくはありません。

    sql.Append("SELECT Condition1 as ""THIS_NAME""," & _
               " Condition2 as ""THIS_OTHER_NAME""," & _
               " Condition3 AS ""ANOTHER_NAME"",")
于 2013-01-22T19:32:34.287 に答える
0

私はあなたの問題を完全には理解していないと思いますが、ここでは任意の量の SQL ステートメントを追加できます...

  Dim SQLBuilder As New System.Text.StringBuilder

   SQLBuilder.Append("YOUR SQL STATEMENT")            

コードのクリーンアップに多くの追加ブロックを追加することで、何を意味するのかわかりませんか? 私たちがあなたを助けることができるように、より詳細に説明していただけますか?

StringBuilder をクリアしたい場合は、もう一度入力する前にこれを空にすることができます....

 SQLBuilder.Remove(0, SQLBuilder.Length)

ステートメントを作成するだけなら、このステートメントを保持する文字列変数を宣言してみませんか? 下記参照...

 Dim strSQLQuery As String = "YOUR STATEMENT"

その後、いつでも好きな場所でこれを使用して設定できます...

ありがとう!

于 2013-01-16T22:44:09.093 に答える