警告:我实际上不会这样做,但这里试图回答这个问题。我的官方立场在底部。
如果我正确阅读了您的问题,那么您实际上是在“解析”文本文件以获取所需的查询。如果是这种情况,我强烈建议不要使用直接text
来完成此任务。您需要某种结构,以便程序知道“如何”获取适当的信息。 标记语言基本上是允许程序导航文档的结构化文本。
有许多标记可以使用,这里有一些可以满足您的需求。
- 如果你想把它保存在一个文件
.txt
中,并保持它非常简单,你可以尝试使用类似 toml 的东西,然后用toml.net或类似的东西解析它
- 更优选的方法是使用JSON(也是文本),然后使用JSON.NET解析数据。
- 最后,您可以使用XML并使用
XmlReader
现在,因为您需要解析数据,您应该创建一个模型来存储这些信息。
// note this is a JSON example, but you can replace it with whatever Markup parser you like.
public class SqlQueriesFromJsonModel {
public class Query{
public string Caption { get; set; }
public string Query { get; set; }
}
public List<Query> Queries{ get; set; }
}
从这里,您想从文件中读取数据,并将其解析为您的模型对象。
SqlQueriesFromJsonModel getSqlQueries(){
// grab the file and parse it using json.net
return queriesFromJson;
}
调用该方法,并使用所需的查询
// using System.Linq;
var queries = getSqlQueries();
var neededSqlQuery = queries.Where(Query => Query.Caption == "Caption 1");
注意:已在文本编辑器中编写,因此可能不准确。如果我有问题,我愿意编辑。
现在对于实际的文档格式,这里有几个选项(您实际上不必使用其中任何一个……这只是为了让创意源源不断)。
这些都是“文本”格式。
json
{
"queries": [
{
"caption": "Caption 1",
"query": "select * from someTable"
},
{
"caption": "Caption 2",
"query": "select * from someOtherTable"
}
]
}
xml
<?xml version="1.0"?>
<queries>
<query caption="Caption 1">select * from someTable</query>
<query caption="Caption 2">select * from someOtherTable</query>
</queries>
通俗易懂
title = "SQL Queries"
[Caption 1]
query = "select * from someTable"
[Caption 2]
query = "select * from someOtherTable"
既然已经不碍事了,我想写一个免责声明,即从文件中读取您的查询不是一个明智的计划。相反,编写一个存储库层来处理所有需要的查询,并考虑使用ORM使其连接起来更容易、更安全。
如果您对存储库和 ORM 不感兴趣,请至少在数据库的存储过程中编写参数化查询。
无论哪种方式,您都应该将文本文件完全排除在外.. imo