我使用以下命令运行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)工具时,它会变成一行而不是格式化/缩进。
这样做的诀窍是什么,所以我可以保持字符串格式不错?
答案 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
请注意,如果您要使用<
或&
符号,则应分别键入<
和&
以符合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";
键是字符串前的@
。现在你在调试器中有很好的代码和良好的格式(保留了换行符)。