VB.NET代码中的SQL查询

mol*_*anu 2 .net sql vb.net visual-studio

我有一个项目,我们直接在代码中使用SQL查询.

Dim strSQL As String = "SELECT P.NAME, C.ID, C.NAME" +
         "FROM PERSONS P " + 
"INNER JOIN CITIES " +
"ON P.IDCITY = C.ID" +
"WHERE P.ID = {0}"
Run Code Online (Sandbox Code Playgroud)

使用""和"+"格式化这样的查询有点令人讨厌有没有办法编写脚本"按原样"(来自SQL文件),而不重新格式化它?

我用了

strSQL = My.Resources.SELECT_PERSON_WITH_CITY
Run Code Online (Sandbox Code Playgroud)

但在调试中我无法查看/修改原始查询.

我知道,我知道,这不是直接使用SQL的最佳实践,但是,我使用的是我所拥有的.

PS.

正如Conor Gallagher所说,在C#中有一种方法可以达到这个目的:

string x = @"
  my 
  name 
  is {0}";
string y = string.Format(x, "jimmy");
Run Code Online (Sandbox Code Playgroud)

有谁知道VB.NET等价物

Con*_*her 5

我相信vb.net中的答案实际上是No,你不能在vb.net中通过多行来创建字符串而不使用"和+等等.在C#中,你可以使用"@"转义字符跨多行来跨越字符串.像这样:

string x = @"
  my 
  name 
  is {0}";
string y = string.Format(x, "jimmy");
Run Code Online (Sandbox Code Playgroud)

但VB.Net没有相应的东西.

更新

根据D ..下面评论,Xml Literals可以解决这个问题.见http://www.codeproject.com/Articles/292152/Mutliline-String-Literals-in-VB-NET

基本上,根据链接,你可以使用Xml Literals做这样聪明的东西:

Dim sourceText As String =
    <string>
        Imports Microsoft.VisualBasic
        Imports System
        Imports System.Collections
        Imports Microsoft.Win32
        Imports System.Linq
        Imports System.Text
        Imports Roslyn.Compilers
        Imports System.ComponentModel
        Imports System.Runtime.CompilerServices
        Imports Roslyn.Compilers.VisualBasic

        Namespace HelloWorld
          Module Program
            Sub Main(args As String())
              Console.WriteLine("Hello, World!")
            End Sub
          End Module
        End Namespace
    </string>
Run Code Online (Sandbox Code Playgroud)

更新2

一直在玩这个.XmlLiterals实际上非常好!如果你想在循环中添加变量,你可以这样做:

Dim x As String
Dim y As String
y = "Jimmy"

x = <string>
        Select *
        From Person
        Where Person.FirstName = <%= y %>
    </string>
Run Code Online (Sandbox Code Playgroud)

  • 实际上,我只是为了进一步澄清您的评论而拍摄.您可以考虑使用XML文字,就像他们在这里展示的那样:http://www.codeproject.com/Articles/292152/Mutliline-String-Literals-in-VB-NET (2认同)