【问题标题】:Effective storing of SQL queries in C# Visual Studio projects在 C# Visual Studio 项目中有效存储 SQL 查询
【发布时间】:2016-11-06 02:20:55
【问题描述】:

在我的 C# 代码中硬编码了大约 20 个(相对)大查询,我想将它们移到其他地方,因为它们现在使我的代码看起来难以管理。这些 SQL 查询的共同点是它们接收一组固定的参数(准确地说是 2 个参数)。

我正在寻找将它们放置在我的项目中的位置以及如何管理它们的方法,因此我正在考虑在代码将要查看的文件夹中为每个查询创建单独的 sql 文件,以某种方式传递这两个实际执行查询之前的参数。

问题如下。是否有任何标准/有效的方法可以在 C# 中执行上述操作?我真的不喜欢在我的项目中硬编码这些 SQL 查询,但我也注意到这些将是参数化查询,因此我可能无法实现上述目标。

非常欢迎任何指导或帮助。如果有帮助,我没有访问权限来编写存储过程来解决这种情况。

【问题讨论】:

  • 查看这个 SO 问题:stackoverflow.com/q/576571/5077042
  • 您可以为参数设置占位符。检索查询后,只需对每个参数使用queryString.Replace("placeholder","yourValue")。确保您的占位符是唯一的并且不会与实际的 SQL 命令冲突。类似myParameterPlaceholder
  • 谢谢,我已经看过这篇文章了。不幸的是,它没有考虑使用参数化 SQL 查询的可能性。只有在最后它提到可以在创建数据库表时在运行时进行调整,但我正在考虑在编译时引入这些“调整”。
  • 将它们嵌入 C# 中很好。或者,您可以将它们保存在资源中,或与您的程序一起部署的外部文件中。请注意 SQL 注入并使用绑定参数 - 不要依赖简单的字符串替换(如 Vishnu 建议的那样)。

标签: c# sql visual-studio


【解决方案1】:

太糟糕了,它必须是查询而不是存储过程 如果无法执行存储过程,则可以将查询放在文本文件中,所有这些文本文件都可以加载到资源文件中。您可以使用“resourceFileName.TextFileName”访问它们,并请保留带有@的参数及其名称。

您可以使用 使用 System.Resources; var resourceManager = new ResourceManager("resourceFileName", Assembly.UnsafeLoadFrom("resourceDll")); string myQuery= resourceManager.GetString("TextFileName");

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    相关资源
    最近更新 更多