将XML字符串存储在XML XElement而不是String中以保留换行符

时间:2010-06-22 00:01:43

标签: vb.net linq-to-xml

在代码中存储SQL时,大多数人都使用字符串:

Dim strSql As String = "Select Foo, Bar From FooBarTable Where Something = @Something"

问题是,当你有很长的SQL字符串时,用代码读取它们变得很困难。你通常可以像这样分割字符串:

Dim strSql As String = "Select Foo, Bar From FooBarTable " & _
                       "Where Something = @Something"

这会导致许多问题:

  • 您无法将其复制到SSMS或从SSMS复制
  • 它使用一种连接字符串的低效方式(&)(因为你的数据库比字符串类慢几个数量级,所以它并不重要)

那么为什么不将长SQL字符串存储为System.XML.Linq.XElement类型?

Dim SQL = <SQL>
               Select Foo, Bar From FooBarTable
               Where Something = @Something
          </SQL>

您可以使用SQL.Value在代码中调用它。

使用此方法,您可以保留换行符和格式,使其更易于阅读,更易于复制。


我的问题是,基本上,我偶然发现了一种在代码中存储多行SQL字符串的巧妙方法,或者我在这里完全遗漏了什么?它似乎适用于我的代码,但我不确定它的效率如何。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我认为这是在代码中放置多行字符串常量的好方法。我喜欢它,我怀疑效率低得多。如果运行性能分析器并发现性能问题,则可以始终用字符串常量替换它们,但在开发代码时,复制和粘贴SQL命令时此方法肯定更容易。

您应该能够在没有SQL.Value调用的情况下简单地使用.ToString,因为Value属性是一个字符串。

答案 1 :(得分:2)

这是怎么用的......它运作得很好

    Dim sFieldName As String = "MyField"
    Dim sTableName As String = "MyTable"
    Dim sValue As String = "MyValue"

    Dim xeSQL = <SQL>
        SELECT  <%= sFieldName %> AS Field1
        FROM
            <%= sTableName %> 
        WHERE
            <%= sFieldName %>  = '<%= sValue %>'
            </SQL>