gpt4 book ai didi

c# - 在 C# 中存储长 SQL 字符串的更好方法

转载 作者:太空狗 更新时间:2023-10-29 22:07:55 25 4
gpt4 key购买 nike

我已经为此搜索了一段时间,但没有找到任何东西。

我正在存储一些很长的 SQL 选择字符串(像这样较短的字符串:)

      string mySelectQuery = "select distribution_stop_information.unique_id_no as stop_unique_id_no,distribution_line_items.unique_id_no as line_unique_id_no, stop_name, stop_address,route_code AS RouteCode, customer_reference," +
"distribution_line_items.datetime_created, rma_number from distribution_stop_information join distribution_line_items on " +
"distribution_line_items.unique_id_no = distribution_stop_information.unique_id_no " +
"where distribution_line_items.datetime_created > '2/22/2017' and customer_no = '91000'";

然后从他们身边经过

var Ourstops = (List<stop_data>)db.Query<stop_data>(mySelectQuery);

这很麻烦并且会产生难以阅读/调试的代码。

有哪些更好的方法可以做到这一点?

只是澄清一点 - 在这个项目上我不允许创建任何存储过程。严格来说,查询只使用类型,并使用 postgresql(这里不是那么重要)

最佳答案

这是我喜欢的格式,只是一个人的意见:

string mySelectQuery = @"
select
distribution_stop_information.unique_id_no as stop_unique_id_no
,distribution_line_items.unique_id_no as line_unique_id_no, stop_name
,stop_address,route_code AS RouteCode, customer_reference
,distribution_line_items.datetime_created, rma_number
from
distribution_stop_information
join distribution_line_items on distribution_line_items.unique_id_no = distribution_stop_information.unique_id_no
where
distribution_line_items.datetime_created > '2/22/2017' and customer_no = '91000'
";

好处

  • 直接复制并粘贴到 sql management studio
  • 使用@(逐字文字)消除所有引号和连接
  • 也很容易使用 $ 进行字符串插值
  • 前面的逗号使评论行更容易

但是请注意 SQL 注入(inject)并尽可能多地使用参数——这几乎总是如此。 (根据评论编辑)

关于c# - 在 C# 中存储长 SQL 字符串的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42429875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com