如何使长SQL字符串看起来不错

时间:2014-03-27 22:17:02

标签: sql vb.net

我使用以下命令运行SQL查询。

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

SQLstring通常很长。我使用以下方法:

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

但是当你在不朽的窗口中调试并获取SQLString,并将其粘贴到SQL Server Management Studio(SSMS)工具时,它会变成一行而不是格式化/缩进。

这样做的诀窍是什么,所以我可以保持字符串格式不错?

2 个答案:

答案 0 :(得分:4)

您可以在VB.NET中使用XML文字来创建SQL语句:

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

请注意,如果您要使用<&符号,则应分别键入&lt;&amp;以符合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附带的版本):现在实现了多行字符串文字,因此您可以使用

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

答案 1 :(得分:0)

VB.NET实际上还没有一种干净的方法(还)。 C#有逐字字符串,但AFAIK不在VB中。

我通常这样做:

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

在代码中阅读并不是太糟糕,但正如你在调试器中写的那样丑陋 - 所有这些都在一行上。您仍然可以从调试器复制粘贴到SQL编辑器并使用代码格式化功能,不是很好:(

编辑万一你可以用C#而不是VB编写代码,你可以做到这一点并且很好:

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

键是字符串前的@。现在你在调试器中有很好的代码良好的格式(保留了换行符)。