gpt4 book ai didi

.net - VB.NET 代码中的 SQL 查询

转载 作者:行者123 更新时间:2023-12-01 04:43:20 24 4
gpt4 key购买 nike

我有一个项目,我们直接在代码中使用 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}"

使用“”和“+”格式化这样的查询有点烦人有没有一种方法可以在不重新格式化的情况下“按原样”(从 SQL 文件)编写脚本?

我会用

strSQL = My.Resources.SELECT_PERSON_WITH_CITY

但在调试中我看不到/修改原始查询。

我知道,我知道,这不是直接使用 SQL 的最佳实践,但是,我会使用我现有的东西。

附言。

正如 Conor Gallagher 提到的,在 C# 中有一种方法可以实现这一点:

string x = @"
my
name
is {0}";
string y = string.Format(x, "jimmy");

有人知道 VB.NET 等价物吗?

最佳答案

我相信 vb.net 中的答案实际上是否定的,您不能在不使用 "和 + 等的情况下在 vb.net 中创建多行字符串。在 C# 中,您可以使用 "@"转义将字符串跨越多行字符。有点像这样:

string x = @"
my
name
is {0}";
string y = string.Format(x, "jimmy");

但是 VB.Net 没有等价物。

更新

根据 D..'s下面的评论,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>

更新 2

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

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

x = <string>
Select *
From Person
Where Person.FirstName = <%= y %>
</string>

关于.net - VB.NET 代码中的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10187926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com