2015-05-19 60 views
1

我正在研究一個將T-SQL過程轉換爲VB.NET代碼的項目,我一直在思考如何在VB.NET中編寫乾淨整潔的東西。MSSQL到VB.NET的轉換

例如,這是T-SQL:

insert into X(
column1, 
column2, 
....., 
column100) 
select 
column1, 
column2, 
....., 
column100 
from Y 

我應該如何轉換這種說法到VB.NET?如果我使用字符串生成器,它會是這樣的:

Dim sb As New StringBuilder() 
With sb 
    .Append("Insert into x(") 
    .Append("column1,") 
    .Append("column2,") 
    .Append("...,") 
    ...... 
End With 

代碼會太長。有沒有更好的選擇?

+0

你沒有提供上下文,所以也許我的評論不適合你的環境,但整潔乾淨的方式來寫這是一個存儲過程;如果你將sql代碼嵌入到vb.net中,你將不會使用sql-server的一些關鍵特性/優點(例如:你失去了執行計劃)。同時請注意,您將該應用程序暴露給可能的sql注入問題。 – Paolo

回答

0

因爲不幸的是有沒有逐字字符串像在C#中,你可以這樣寫:

string insertSQL = @" 
insert into X(
column1, 
column2, 
....., 
column100) 
select 
column1, 
column2, 
....., 
column100 
from Y 
"; 

你可以使用XML文本獲得類似的行爲:

Dim insertSQL As String = <![CDATA[ 
insert into X(
column1, 
column2, 
....., 
column100) 
select 
column1, 
column2, 
....., 
column100 
from Y 
]]>.Value 

詳細的經典方式是使用:

Dim insertSQL As String = "insert into X(" & vbCrLf & 
          "column1, " & vbCrLf & 
          "column2, " & vbCrLf & 
          "....., " & vbCrLf & 
          "column100) " & vbCrLf & 
          "select " & vbCrLf & 
          "column1, " & vbCrLf & 
          "column2, " & vbCrLf & 
          "....., " & vbCrLf & 
          "column100 " & vbCrLf & 
          "from Y "