StreamReader空引用异常

本文关键字:异常 引用 StreamReader | 更新日期: 2023-09-27 18:17:07

我试图从资源文件夹中的。SQL文件中读取SQL语句,我现在有两个。sql文件,其中一个读取正确,另一个返回NullRefrenceException

下面是我对sql文件的调用:
 string sqlFailRecordNoMatch = EmbeddedResource.GetString("Resources.SQLScripts.RecordNumberFailQuery.sql");

下面是GetString方法:

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;
}

StreamReader空引用异常

你在其中一个上获得NullReferenceException的唯一原因是:

  1. 失败的那个没有被设置为Embedded Resource。你可以通过点击Solution Explorer中的文件并点击F4来检查。
  2. 您正在使用错误的完全限定路径。

我猜是#1。

如果你直接使用Visual Studio中的资源编辑器,那就容易多了:

    在你的项目中创建一个新文件夹(也许叫做Queries)
  • 右键单击此文件夹并选择添加-新建项目
  • 在对话框中选择Textfile,并给它一个关于这个查询将做什么的名称
    • 确保将文件扩展名从.txt替换为.sql
  • 把你的语句直接放到这个文件
  • 在资源编辑器中将此文件添加为资源(通常位于项目的属性文件夹下,或者简单地通过添加-新建项目-资源文件创建它)
  • 现在你可以通过使用Properties.Resources.MySqlStatement 在你的代码中访问这个sql语句