C# StreamReader空引用异常
我试图从资源文件夹中的.SQL文件中读取SQL语句, 我现在有2个.SQL文件,它正确地读取一个,而另一个返回一个null referenceexception 以下是我对sql文件的调用:C# StreamReader空引用异常,c#,sql,nullreferenceexception,streamreader,C#,Sql,Nullreferenceexception,Streamreader,我试图从资源文件夹中的.SQL文件中读取SQL语句, 我现在有2个.SQL文件,它正确地读取一个,而另一个返回一个null referenceexception 以下是我对sql文件的调用: string sqlFailRecordNoMatch = EmbeddedResource.GetString("Resources.SQLScripts.RecordNumberFailQuery.sql"); 下面是GetString方法: 在一个与另一个上会出现NullReferenceExce
string sqlFailRecordNoMatch = EmbeddedResource.GetString("Resources.SQLScripts.RecordNumberFailQuery.sql");
下面是GetString方法:
在一个与另一个上会出现NullReferenceException的唯一原因是: 失败的资源未设置为嵌入式资源。您可以通过单击解决方案资源管理器中的文件并点击F4来检查这一点。 您使用了错误的完全限定路径。
我猜是1。如果您只需使用Visual Studio中的资源编辑器,就会容易得多: 在项目中创建一个新文件夹,可能称为“查询” 右键单击此文件夹并选择“添加-新建项目” 在对话框中,只需选择Textfile并为其提供有关此查询将执行的操作的名称 确保将文件扩展名从.txt替换为.sql 把你的陈述放在这个文件里 在资源编辑器中,将此文件添加为通常位于项目“属性”文件夹下的资源,或者也可以通过add-New Item-Resources file创建它 现在,只需使用Properties.Resources.MySqlStatement,就可以在代码中访问此sql语句
在第二个.SQL文件中,您是否在调试中进行了检查并检查了数据的值?我的猜测是,出于某种原因,它是空的。如果读取正确,则读取它的代码没有问题,但更可能找到文件。您是否显示了不同的GetString重载?上面的一个将程序集作为第一个参数,但是您只使用字符串参数调用GetString。很可能,您的name参数中有输入错误。谢谢!这是第一次。这么简单的一个错误,我要花很长时间才能发现。@user2056726,不用担心,朋友。我只知道这是因为我自己做的!
public static string GetString(System.Reflection.Assembly assembly, string name)
{
System.IO.StreamReader sr = EmbeddedResource.GetStream(assembly, name);
string data = sr.ReadToEnd();
sr.Close();
return data;
}