Автоматическая очистка Long StringBuilder?

Я создаю большой оператор SQL, используя метод StringBuilder.Append() в VB.NET. Я хотел бы просто поместить всю инструкцию SQL в один блок Append() и использовать какую-то функцию для автоматического создания множества блоков Append() для очистки кода.

Я использую Visual Studio 2008 и ReSharper 7, но я не могу найти, как это сделать, кроме ручного добавления блоков Append(). Очистка кода ReSharper на удивление не помогла.

Это возможно?

РЕДАКТИРОВАТЬ для дальнейшего уточнения:

Я хотел бы иметь возможность написать один длинный 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.


person Community    schedule 16.01.2013    source источник
comment
Вообще не понятно, о чем вы тут спрашиваете. Возможно, вы могли бы показать нам пример из вашего кода?   -  person RBarryYoung    schedule 17.01.2013
comment
@RBarryYoung Я отредактировал этот вопрос для ясности.   -  person    schedule 18.01.2013


Ответы (2)


Ответ на ваш вопрос: «Нет, для этого нет возможностей R#».

Однако, если это чисто для форматирования, гораздо более подходящим решением будет ваш Строковые литералы распределяются по нескольким строкам.

Вы не хотите загрязнять свой код дюжиной вызовов методов, чтобы добиться того же самого.

    sql.Append("SELECT Condition1 as ""THIS_NAME""," & _
               " Condition2 as ""THIS_OTHER_NAME""," & _
               " Condition3 AS ""ANOTHER_NAME"",")
person John Arlen    schedule 22.01.2013

Думаю, я не совсем понимаю вашу проблему, но здесь вы можете добавить любое количество операторов 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"

Затем вы можете использовать это, где хотите, и установить его в любое время...

Спасибо!

person zaggler    schedule 16.01.2013
comment
Вместо SqlBuilder.Remove(0, SqlBuilder.Length) можно использовать SqlBuilder.Length = 0, а в .NET 4.0 и более поздних версиях — SqlBuilder.Clear(). - person Andrew Morton; 22.01.2013