Jos*_*osh 3 c# sql ado.net winforms
以前,我问我的问题,我想让你知道我对C#中的winforms很新.:)所以,我正在尝试使用C#创建一个winform,并且为了从后端获取数据,我将所有SQL查询存储在.txt文件中.在.txt文件中输入SQL查询的格式如下:
// Caption
Query
end
Run Code Online (Sandbox Code Playgroud)
所以,在我的代码中,我开始在循环中读取文件并阅读,直到我得到我需要的标题.有一次,我得到了我的标题,我开始逐行阅读查询,直到我达到"结束".在我得到查询后,我明确地替换了查询中的变量(因为我知道查询是否有变量).例如,
// Caption 1
Select * from table_1 where col1 = var1;
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我读取查询并使用string.Replace()将"var1"替换为var1.ToString().然后,执行查询.
我的问题是,有更好的方法吗?比如,是否有更好的格式将查询存储在.txt文件中?任何建议将不胜感激.谢谢.
警告:我实际上不会这样做,但这是试图回答这个问题.我的官方立场在底部.
如果我正确地阅读您的问题,您的斗争实际上是"解析"文本文件以获得所需的查询.如果是这种情况,我强烈建议不要使用直接text
来完成这项任务.您需要某种结构,以便程序知道"如何"获取适当的信息. 标记语言基本上是结构化文本,允许程序导航文档.
有许多标记可以使用,这里有一些可以满足您的需求.
.txt
文件中,并保持它非常简单,你可以尝试使用像toml这样的东西,并用toml.net 或类似的东西解析它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; }
}
Run Code Online (Sandbox Code Playgroud)
从这里,您希望从文件中读取数据,并将其解析为模型对象.
SqlQueriesFromJsonModel getSqlQueries(){
// grab the file and parse it using json.net
return queriesFromJson;
}
Run Code Online (Sandbox Code Playgroud)
调用方法,并使用所需的Query
// using System.Linq;
var queries = getSqlQueries();
var neededSqlQuery = queries.Where(Query => Query.Caption == "Caption 1");
Run Code Online (Sandbox Code Playgroud)
注意:已经在文本编辑器中写了这个,所以它可能不准确.如果我出错了,我会接受编辑.
现在对于实际的文档格式,这里有几个选项(您实际上不必使用其中任何一个......这只是为了让创意果汁流动).
JSON
{
"queries": [
{
"caption": "Caption 1",
"query": "select * from someTable"
},
{
"caption": "Caption 2",
"query": "select * from someOtherTable"
}
]
}
Run Code Online (Sandbox Code Playgroud)
XML
<?xml version="1.0"?>
<queries>
<query caption="Caption 1">select * from someTable</query>
<query caption="Caption 2">select * from someOtherTable</query>
</queries>
Run Code Online (Sandbox Code Playgroud)
toml
title = "SQL Queries"
[Caption 1]
query = "select * from someTable"
[Caption 2]
query = "select * from someOtherTable"
Run Code Online (Sandbox Code Playgroud)
现在已经不在了,我想写一个免责声明,从文件中读取您的查询并不是一个明智的计划.相反,编写一个存储库层来处理所有需要的查询,并考虑使用ORM使其更容易,更安全.
如果你不感兴趣的信息库和ORM的,至少写参数化查询内存储过程的数据库中.
无论哪种方式,你应该完全保留文本文件.. imo
归档时间: |
|
查看次数: |
5782 次 |
最近记录: |