代码之家  ›  专栏  ›  技术社区  ›  David

.NET.config,真长文本

  •  1
  • David  · 技术社区  · 15 年前

    我正在构建一个非常简单的应用程序.NET控制台应用程序,它将执行一个SQL语句并将其发布到一个URL。我的问题是,SQL语句可能很长,而且肯定会覆盖很多行。如何在.config文件中指定大量文本?

    例子:

    <add key="SelectStatement" value="select * from test1table"/>
    

    上述方法非常简单,而且效果也很好。但是,当该SQL的长度超过1000个字符,并且包含许多case语句、join和group by时,就会变得更麻烦。从查询分析器进行基本的复制和粘贴并不能很好地工作。

    理想值在下面,但不起作用。:

    <add key="SelectStatement"> select * from test1table </add>
    

    谢谢你的帮助。

    编辑:根据反馈,会更具体。

    这个计划是为了我的一个朋友,这不是太技术性的,能够在不同的客户机位置部署.exe。每个位置都有一个类似的查询,但每个查询可能不同。他将拥有对表的只读访问权,即;无法将任何内容保存到数据库中或创建不同的对象。我希望所有的配置设置只保留一个文件。是否有一种干净/简单的方法将其存储在.config文件中?

    6 回复  |  直到 15 年前
        1
  •  2
  •   marc_s    15 年前

    或者,您也可以将实际的SQL语句存储在数据库表中,例如“sqlStatements”,然后只需在此处定义“key”名称并从数据库中获取长文本。

    或者,您可以在项目中包含带有SQL语句的文本文件,并将其标记为“嵌入的资源”,并将其文件名存储在配置中。

    简而言之:不要在config中存储超过几百个字符——这是不适合的。在配置中存储一个指针(文件名、数据库键名等),在其他地方存储实际文本(SQL语句或其他内容)。

    马克

        2
  •  4
  •   M4N    15 年前

    您可以将文件名存储在配置中,并将SQL放到该文件中。然后使用读取文件内容 File.ReadAllText() .

        3
  •  3
  •   RichO    15 年前

    如果您使用的是SQL Server或MySQL5,那么应该将长SQL语句转换为存储过程。这样做也会获得性能提升。

        4
  •  3
  •   SecretDeveloper    15 年前

    我使用类似的系统将SQL查询存储在XML文档中。我将所有查询添加到以下或类似结构下的一个文件中:

    <queries>
      <query id="someQueryName" orderBy="created desc">
         select * from some table where id &lt; 500
      </query>
    .....  all the other queries
    </queries>
    

    然后,我可以使用xmlpaths或其他方法提取查询,并将<和>自动转换为<和>。我在几个没有问题的大项目中广泛地使用它,这是一个很好的方法,可以在不重新编译任何代码的情况下对应用程序的工作方式进行细微的更改。

        5
  •  0
  •   Nicolas Dorier    15 年前

    用它们的XML等价物替换空格,或者更好,用长文本以编程方式更改设置。

        6
  •  0
  •   MusiGenesis    15 年前

    将过长的查询另存为数据库中的视图,然后只保存 SELECT * FROM yourView 在配置文件中。