执行存储为资源的SQL脚本

时间:2009-09-04 13:17:42

标签: c# .net sql

我想在我的解决方案中存储冗长的.sql脚本并以编程方式执行它们。我已经想出如何执行包含我的sql脚本的字符串,但我还没想出如何从存储在解决方案中的文件中读取字符串(例如,在/ Scripts子文件夹下)。

4 个答案:

答案 0 :(得分:31)

将SQL文件添加到项目中,然后创建新的资源文件。打开SQL文件,从左上角的下拉列表中选择“文件”(默认为字符串)。然后点击添加资源并导航到/选择SQL文件。这允许您从资源文件中获取SQL而不会丢失类型安全性,如下所示:

SqlFiles.SqlScript

以上是Visual Studio 2010中的过程。我还在my blog上写了这篇文章。

答案 1 :(得分:19)

首先,编辑.sql文件的属性,以便将其作为资源嵌入。

然后使用类似于以下的代码来检索脚本:

string commandText;
Assembly thisAssembly = Assembly.GetExecutingAssembly();
using (Stream s = thisAssembly.GetManifestResourceStream(
      "{project default namespace}.{path in project}.{filename}.sql"))
{
   using (StreamReader sr = new StreamReader(s))
   {
      commandText = sr.ReadToEnd();
   }
}

答案 2 :(得分:0)

将文件添加到资源,并将文件设置为资源,代码写入:

String SQLCommand = NAMESPACE.Properties.Resources.ScriptDB.ToString()

答案 3 :(得分:0)

使用QueryFirst。您将sql放在该工具提供的.sql模板中。在幕后,QueryFirst将其编译为资源并连接调用以在运行时检索它。您只需要担心在生成的包装类上调用Execute(),并且可以通过生成的POCO访问结果。端到端类型安全。永远不必记住列名或数据类型,以及在.sql文件中使用sql所需的sql的相当大的优势。

免责声明:我写过QueryFirst