C# 获取错误:";“位置0处没有行”;

C# 获取错误:";“位置0处没有行”;,c#,.net,C#,.net,我正试图上传一个包含文本文件的txt文件,并从数据库中检索文本文件中的数据。我之前工作正常,但突然出现了此错误 这是文本文件中的内容 X341HRK20140331 1000002 W177WAK20140405 1000004 R969GOJ20140405 1000005 W21

我正试图上传一个包含文本文件的txt文件,并从数据库中检索文本文件中的数据。我之前工作正常,但突然出现了此错误

这是文本文件中的内容

X341HRK20140331             1000002                        
W177WAK20140405             1000004                        
R969GOJ20140405             1000005                        
W214VLR20140405             1000006  
加载文本文件时,会出现以下错误:

StreamReader reader = File.OpenText(ofd.FileName);

while ((line = reader.ReadLine()) != null && line.Trim().Length>0)
{
   //MUST STRIP ANY LEADING BLANK SPACES
   vrm = line.Substring(0, 7).Trim().Replace(" ",""); 
   eventYear = line.Substring(7, 4);
   eventMonth = line.Substring(11, 2);
   eventDay = line.Substring(13, 2);
   dateOfEvent = eventYear + "-" + eventMonth + "-" + eventDay;
                                enquirerReference = line.Substring(29, 6);
                                dateSettledString="";
                                vq_entry = "";

   //lookup-up other data from ICPS

   string stringCommand = "SELECT t_number, t_reference, t_zone_name, t_street_name, t_camera_ticket, t_date_finally_settled,te_event FROM tickets  inner join  ticket_events on tickets.t_number = ticket_events.te_system_ref WHERE t_number=@enquirerReference";
                                    SqlCommand command = new SqlCommand(stringCommand, connection);
                                    command.CommandTimeout = 900;
                                    command.Parameters.AddWithValue("@enquirerReference", enquirerReference);
                                    SqlDataAdapter adapter = new SqlDataAdapter(command);
                                    DataTable tblTemp = new DataTable("DataSet");
                                    adapter.Fill(tblTemp);

      ticketRef = tblTemp.Rows[0]["t_reference"].ToString(); -- this is where I receive this error.                     
      site_zoneName = tblTemp.Rows[0]["t_zone_name"].ToString();
      site_streetName = tblTemp.Rows[0]["t_street_name"].ToString();
      issue_type = tblTemp.Rows[0]["t_camera_ticket"].ToString();
      issue_type = issue_type.Replace("-1", "Camera");
      issue_type = issue_type.Replace("0", "Manual");
      dateSettledString = tblTemp.Rows[0]["t_date_finally_settled"].ToString().Trim();
      events = tblTemp.Rows[0]["te_event"].ToString();
      excluded = "";

      //Read Ticket Exclusion File and process
      StreamReader readerTEF = File.OpenText(ticket_exclude_file);
      while ((lineTEF = readerTEF.ReadLine()) != null)
           {
              if (lineTEF == ticketRef)
              {
                  excluded=excluded + "Excluded on Ticket Reference";
              }
            }

       //Read ZoneName Exclusion File and process
       //Check on matching zonename and streetname
       StreamReader readerZNE = File.OpenText(zonename_exclude_file);
       while ((lineZNE = readerZNE.ReadLine()) != null)
        {
           testSite=lineZNE.Split('#');
           if (testSite[0] == site_zoneName && testSite[1] == site_streetName)
              {
                  excluded = excluded + "Excluded on Zone & Street name";
               }
        }


        //VOID VRM
       if (vrm.Trim().ToUpper() == "VOID")
         {
              excluded = excluded + "Excluded on VRM";
         }


        DateTime dtEvent = DateTime.Parse(dateOfEvent);
        TimeSpan span = DateTime.Now - dtEvent;
        days_past_event = span.Days;

         if (dateSettledString.Length > 5)
         {
            excluded = excluded + "Ticket Has Already Been Settled";
         }

检查一下,您的sql语句可能不会始终带来数据

if(tblTemp !=null)
{
    if(tblTemp.Rows.Count>0)
    {
        mticketRef = tblTemp.Rows[0]["t_reference"].ToString();
    }
}
也建议您在这种情况下使用

i、 e


mticketRef=tblTemp.Rows[0][“t_reference”]=DBNull.Value?tblTemp.Rows[0][“t_reference”].ToString():“”

检查一下,您的sql语句可能不会始终带来数据

if(tblTemp !=null)
{
    if(tblTemp.Rows.Count>0)
    {
        mticketRef = tblTemp.Rows[0]["t_reference"].ToString();
    }
}
也建议您在这种情况下使用

i、 e


mticketRef=tblTemp.Rows[0][“t_reference”]=DBNull.Value?tblTemp.Rows[0][“t_reference”].ToString():“”

什么错误??我看不到一行,这里没有一行与您传入的参数匹配
@inquirerReference
。为什么不将代码与更改前的代码进行比较?顺便问一下,在同一行上使用Trim()和Replace(x,“,”)有什么意义:vrm=line.Substring(0,7)。Trim().Replace(“,”);什么错误??我看不到一行,这里没有一行与您传入的参数匹配
@inquirerReference
。为什么不将代码与更改前的代码进行比较?顺便问一下,在同一行上使用Trim()和Replace(x,“,”)有什么意义:vrm=line.Substring(0,7)。Trim().Replace(“,”);文档说明,如果没有返回行,则行应返回null。这是文档出错的一个例子吗?@huMpty:DbNull.Value.ToString()总是导致空字符串。因此,你建议的结果与OP的结果完全相同。@MarkBertenshaw:对不起,我没听懂你的意思?@MartinMulder:是的,因为它很管用。如果OP用于任何其他类型,如decimal、long。我可以看到OP刚刚在它得到错误的地方放了一行,但是sql语句选择了更多列,可能带有
date
datetime
@huMpty duMpty。文档说,如果没有返回行,则行应该返回null。这是文档出错的一个例子吗?@huMpty:DbNull.Value.ToString()总是导致空字符串。因此,你建议的结果与OP的结果完全相同。@MarkBertenshaw:对不起,我没听懂你的意思?@MartinMulder:是的,因为它很管用。如果OP用于任何其他类型,如decimal、long。我可以看到OP刚刚把它得到错误的行放在了那里,但是sql语句选择了更多的列,可能是
date
datetime
@huMpty-duMpty