执行存储为资源的SQL脚本

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

首先,编辑.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(); } } 

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

SqlFiles.SqlScript

以上是Visual Studio 2010中的过程。我也在我的博客上写过这个。

将文件添加到Resources ,并在代码写入中将文件设置为Resource

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

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

免责声明:我写了QueryFirst