我正在构建一个非常简单的应用程序.net控制台应用程序,它将执行SQL语句并将其发布到URL。我的问题是SQL语句可能会很长,并且肯定会涉及很多行。如何在.config文件中指定大量文本?
示例:
<add key="SelectStatement" value="select * from test1table"/>
上述内容非常简单且效果很好。但是,当该SQL长度超过1000个字符且包含许多case语句时,连接,分组将变得更加麻烦。查询分析器的基本复制和粘贴效果不佳。
理想会在下面,但不起作用。 :
<add key="SelectStatement"> select * from test1table </add>
感谢您的帮助。
编辑:根据反馈,更具体。
该计划适用于我的朋友,这不太技术,无法在各个客户端部署.exe。每个位置都有类似的查询,但每个位置可能不同。他只能读取对表的访问权限,即;,无法将任何内容保存到数据库中或创建不同的对象。我希望将所有配置设置保留为1个文件。是否有一种干净/简单的方法将其存储在.config文件中?
答案 0 :(得分:4)
您可以在配置中存储文件名,并将SQL放入该文件中。然后使用File.ReadAllText()读取文件内容。
答案 1 :(得分:3)
如果您使用的是sql server或mySql版本5,则应将long sql语句转换为存储过程。这样做也会带来性能提升。
答案 2 :(得分:3)
我使用类似的系统在XML文档中存储SQL查询。我在以下或类似结构中将所有查询添加到一个文件中:
<queries>
<query id="someQueryName" orderBy="created desc">
select * from some table where id < 500
</query>
..... all the other queries
</queries>
然后我可以使用xmlPaths或其他东西来提取查询,&amp; lt和&amp; gt会自动转换为&lt;和&gt;。我在几个大项目中广泛使用它没有任何问题,这是一个很好的方法,可以在不重新编译任何代码的情况下对应用程序的工作方式进行细微更改。
答案 3 :(得分:2)
或者您也可以将实际的SQL语句存储在数据库表中,例如“SQLStatements”,然后只需在此处定义“密钥”名称,并从数据库中获取长文本。
或者您可以在项目中包含带有SQL语句的文本文件,并将其标记为“embededded resource”并将其文件名存储在配置中。
简而言之:不要在配置中存储超过几百个字符 - 这真的不是为此而做的。将指针(文件名,数据库键名等)存储在配置中,并将实际文本(SQL语句或其他内容)存储在其他位置。
马克
答案 4 :(得分:0)
用等效的XML替换空格,或者更好,用长文本以编程方式更改设置。
答案 5 :(得分:0)
将过长的查询保存为数据库中的View,然后将SELECT * FROM yourView
保存在配置文件中。