2014-03-27 6 views
1

아래 명령을 사용하여 SQL 쿼리를 실행합니다.긴 SQL 문자열을 멋지게 만드는 방법

Dim SQLString as String 
da.SelectCommand = New SqlCommand(SQLString, Conn) 

종종 SQLstring은 실제로 길다. 나는 방법에 따라 사용

SQLString = " Select * 
SQLString += vbCrLf & " From" 
SQLString += vbCrLf & " Student" 

을하지만, 디버깅 및 immideate 창에 SQLString을 얻고, SQL Server Management Studio (SSMS) 도구에 붙여 넣을 때, 그것은 한 줄이되고 멋지게/들여 쓰기 포맷되지 않았습니다.

이 트릭을 사용하면 좋은 문자열 형식을 유지할 수 있습니까?

당신은 당신의 SQL 문을 만들 VB.NET 리터럴을하는 XML을 사용할 수 있습니다
+0

를 사용하여 C#을 (저항 할 수 없었다)... C# .NET에서 축 어적 문자열 리터럴을 사용하여 여러 줄로 이동할 수 있습니다 (심지어 gh는 그것의 주요 목적이 아니다). – PeteGO

+0

가능한 [VB.NET의 여러 줄 문자열] (http://stackoverflow.com/questions/706382/multiline-strings-in-vb-net) – miroxlav

+0

[StringBuilder] (http://msdn.microsoft .com/en-us/library/ms172824.aspx) –

답변

4

: 그런 다음 < 또는 & 기호를 사용하려는 경우 각각 &lt;&amp;,에 입력해야

 Dim sql = <sql> 
SELECT * 
    FROM Student AS S 
    JOIN Class AS C 
     ON S.Id = C.Id 
</sql>.Value 

주 XML을 준수하십시오.

당신은 XML에 볼 수있는 공간이 결과 문자열에 문자 그대로, 그래서 당신이 한 (

Dim sql = <sql> 
      SELECT * 
       FROM Student AS S 
       JOIN Class AS C 
        ON S.Id = C.StudentId 
      </sql>.Value 

로 포맷 한 경우 리터럴 문자열이 아니므로 그것은 정말 문제가되지 것입니다 한 줄 이상 쓰이는 SQL에서).

나는 이것이 실현 될 수 있다는 것을 깨닫는 최초의 사람으로 누가 기인해야하는지 모릅니다. VB 버전 14 (VS2015와 함께 제공되는 하나)에 대한

UPDATE : 당신이 사용할 수 있도록 여러 줄 문자열 리터럴 지금, 구현

Dim sql = "SELECT * 
From Student As S 
Join Class As C 
    On S.Id = C.Id" 
+0

VB 구문을 조금이라도 해결하기 위해 'XElement'를 인스턴스화하지 않습니까? 또한 시도하지는 않았지만 줄 바꿈이 올바르게 보존 되었습니까?이것은'CDATA' 블록이 아니기 때문에 나는 추측하지 않을 것이다. SQL을 작성할 때'<'를 이스케이프 처리해야 할 필요성이 너무 높습니다. – jods

+0

@jods 과도할지 모르지만 컴퓨터가 작업을 수행합니다. 예,'<'를 피하는 것은 짜증나게합니다. TBH, 가능한 경우 저장 프로 시저로 모든 작업을 수행합니다. –

+0

네 ... 그냥'System.Xml.Linq'을 참조하는 것에 대해 기분이 좋지 않고 런타임에 XElement의 모든 인스턴스화 및 처리가 문자열 상수 (즉, 무료) 여야한다는 것에 대해 기분이 좋지 않습니다. – jods

0

VB.NET 정말 깨끗한 방법이 없습니다 그렇게하려면 (아직). C#은 축 어적으로 문자열을 가지고 있지만 VB에서는 그렇지 않습니다.

나는 보통 이렇게 :

Dim sql = "SELECT * " & 
      "FROM Table " & 
      "WHERE x > 4 " & 
      "ORDER BY 1 DESC" 

그것은 코드를 읽을 나쁘지 아니지만, 당신이 쓴대로 디버거에서 추한 - 모두 한 줄에. 디버거에서 SQL 편집기로 복사하여 붙여 넣을 수 있습니다. (

EDIT VB가 아닌 C#으로 코드를 작성할 수 있으므로 좋은 결과를 얻을 수 있습니다. :.

string sql = @" 
SELECT * 
FROM Table 
WHERE x > 4 
ORDER BY 1 DESC"; 

키는 문자열 전에 @ 지금 당신은 좋은 코드 및 디버거에서 좋은 포맷이 (줄 바꿈이 유지됩니다)이

관련 문제