在C#Visual Studio项目中有效存储SQL查询

在C#Visual Studio项目中有效存储SQL查询,c#,sql,visual-studio,C#,Sql,Visual Studio,我在C代码中硬编码了大约20个(相对)大的查询,我想把它们转移到其他地方,因为它们现在使我的代码看起来难以管理。这些SQL查询的共同点是它们接收一组固定的参数(精确地说是两个参数) 我正在寻找将它们放置在项目中的位置以及如何管理它们的方法,因此我考虑在代码将要查看的文件夹中为每个查询创建单独的sql文件,在实际执行查询之前以某种方式传递这两个参数 问题如下。是否有任何标准/有效的方法在C#中执行上述操作?我真的不喜欢在我的项目中硬编码这些SQL查询,但我也注意到这些查询是参数化查询,因此我可能无

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

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

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


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

最佳做法是将这些查询放入存储过程中

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

您可以使用 利用系统资源; var resourceManager=new resourceManager(“resourceFileName”,Assembly.UnsafeLoadFrom(“resourceDll”);
字符串myQuery=resourceManager.GetString(“TextFileName”)

请参见此问题:可以为参数设置占位符。检索查询后,只需对每个参数使用
queryString.Replace(“占位符”、“您的值”)
。确保占位符是唯一的,并且不会与实际的SQL命令冲突。类似于
myParameterPlaceholder
谢谢,我已经看过这篇文章了。不幸的是,它没有考虑使用参数化SQL查询的可能性。直到最后,它才提到在创建数据库表时可以在运行时进行调整,但我正在考虑在编译时引入这些“调整”。将它们嵌入C#中是可以的。或者您可以将它们保存在资源中,或者保存在与您的程序一起部署的外部文件中。请注意SQL注入和使用绑定参数-不要依赖简单的字符串替换(如Vishnu建议的)。这是一个很好的评论,但回答很差。此外,OP可能没有对相关数据库的创建过程权限。如果OP没有访问权限,它不应该出现在描述中吗?为什么贫穷?我可以解释一下为什么最佳实践是使用存储过程而不是参数化查询吗?事实上,用占位符阅读前面的答案,我确信这对于SQL注入来说是多余的。不幸的是,不可能执行存储过程。这是一个糟糕的答案,因为你没有解释为什么存储过程是最佳实践(别误会,我想你是对的,你只需要说明为什么)。