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等价物?
我相信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)
归档时间: |
|
查看次数: |
12652 次 |
最近记录: |