C# 对象引用未设置为对象的实例
我在int end=line.IndexOfst2处出错;行如果在上获得NullReferenceException 然后该行必须为空。您应该找出原因-我猜文件中的行数没有您预期的那么多。TextReader.ReadLine在数据不足时返回null 此外: 这个方法很大,而且很难阅读。试着把它重构成更小的块。 对StreamReader和SqlConnection等资源使用using语句 使用LINQ到XML可能会使XML部分更简单 与其使用objReader.Peek,不如检查行是否为null以检测输入的结束 相对高级如果这是在客户端应用程序中,那么在UI线程中完成所有这些工作将锁定UI。您应该在不同的线程中执行长时间运行的任务。C# 对象引用未设置为对象的实例,c#,.net,sql-server,C#,.net,Sql Server,我在int end=line.IndexOfst2处出错;行如果在上获得NullReferenceException 然后该行必须为空。您应该找出原因-我猜文件中的行数没有您预期的那么多。TextReader.ReadLine在数据不足时返回null 此外: 这个方法很大,而且很难阅读。试着把它重构成更小的块。 对StreamReader和SqlConnection等资源使用using语句 使用LINQ到XML可能会使XML部分更简单 与其使用objReader.Peek,不如检查行是否为nul
首先,尽量将格式设置得更好一些,因为代码是不可读的 问题是任何对象都没有初始化。可能是objReader.ReadLine;返回null,因此
int end = line.IndexOf(st2);
不按设想工作检查行是否为空:
我想说,它可能没有像OP预期的那样工作,但它确实像预期的那样工作-当没有更多的行可以读取时,它返回null是完全可以的。更不用说硬编码的连接字符串、硬编码的文件路径和内联sql了。@Richard:Yes,我觉得过一会儿停下来是值得的:这真的需要一个sql server标记吗?因为问题是关于c代码的,除了代码中有sql语句之外,它与sql无关?
int end = line.IndexOf(st2);
line = objReader.ReadLine();
int end;
if(line != null)
end= line.IndexOf(st2);