2013-01-16 26 views
2

我在VB.NET中使用StringBuilder.Append()方法創建一個大的SQL語句。我只想將整個SQL語句放在一個Append()區塊中,並使用某種功能自動創建多個Append()區塊來清理代碼。長StringBuilder的自動清理?

我使用的是Visual Studio 2008和ReSharper 7,但我無法找到任何其他方法,除了手動添加Append()塊以外。 ReSharper的代碼清理令人驚訝地沒有幫助。

這可能嗎?

EDIT進一步澄清:

我希望能夠寫一個很長的append(),並有IDE或某些插件,它分成幾個附加()出於美觀的目的。

例如:

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'") 

上述追加()是冗長而不是非常可讀性。但是,將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'") 

....等..它沒有被以這種方式,只是分離是將其分解成若干格式完全附加陳述。

+0

這真的不是很清楚你在這裏要求什麼。也許你可以向我們展示你的代碼中的一個例子嗎? – RBarryYoung

+0

@RBarryYoung爲了清楚起見,我編輯了這個問題。 – TimeBomb006

回答

0

我不完全理解你的問題,我想,但在這裏,你可以添加SQL語句的任何量...

Dim SQLBuilder As New System.Text.StringBuilder 

    SQLBuilder.Append("YOUR SQL STATEMENT")    

現在,我不知道你加入許多附加塊潔淨的意思up代碼?你能否詳細解釋一下,我們可以幫助你?

我會說,如果你想清除的StringBuilder可以再次填充它之前只是emtpy這個....

SQLBuilder.Remove(0, SQLBuilder.Length) 

如果你正在做的是創造一個說法,爲什麼不申報一個字符串變量來保存這條語句?見下文......

Dim strSQLQuery As String = "YOUR STATEMENT" 

然後你就可以使用這個要和隨時設置...

謝謝!

+0

爲了清晰起見進行了編輯。 – TimeBomb006

+0

而不是'SqlBuilder.Remove(0,SqlBuilder.Length)'你可以使用'SqlBuilder.Length = 0',或者在.NET 4中。0和更高版本,'SqlBuilder.Clear()'。 –

1

您的問題的答案是:「不,沒有R#的能力。」

但是,如果這完全是格式化,更合適的解決方案是讓你的String literals be spread across multiple lines

你不想用十幾個方法調用來污染你的代碼來實現同樣的事情。

sql.Append("SELECT Condition1 as ""THIS_NAME""," & _ 
       " Condition2 as ""THIS_OTHER_NAME""," & _ 
       " Condition3 AS ""ANOTHER_NAME"",")