代码之家  ›  专栏  ›  技术社区  ›  Chad Levy

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

  •  2
  • Chad Levy  · 技术社区  · 16 年前

    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复制
    • 它使用了一种低效的方法( & )连接字符串(这并不重要,因为DB比string类慢几个数量级)

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

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

    您可以使用 SQL.Value .

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


    我的问题是,基本上,我是不是偶然发现了一种在代码中存储多行SQL字符串的聪明方法,或者我完全遗漏了什么?它似乎在我的代码中工作,但我不确定它的效率有多高。

    有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   CoderDennis    16 年前

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

    你应该能够简单地使用 SQL.Value 没有 .ToString 调用,因为Value属性是字符串。

        2
  •  2
  •   Daniel Kaminski    14 年前

    这就是如何使用它。。。它工作得很好

        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>
    
    推荐文章