2016-11-07 6 views
0

Я запрашиваю базу данных, а затем создаю таблицу HTML с результатами, но когда я назначаю возвращенную строку InnerHtml контейнера div, Я получаю «необработанное исключение типа" System.StackOverflowException»Получение переполнения стека/бесконечного цикла из этого кода, не знаю, почему

Using db As New AdoHelper() 

     Dim builder As New StringBuilder 
     builder.Append("<table class='table table-striped table-hover' data-toggle='table'><thead><tr><th>.......</th></tr></thead>") 
     Using rdr As SqlDataReader = db.ExecDataReader(qry) 
      ' Get row of data from rdr 
      While rdr.Read() 
       builder.Append("<tbody><tr><td>") 
       builder.Append(rdr(rdr.GetName(0))) 
       builder.Append("</td>") 
       builder.Append("<td>") 
       builder.Append(rdr(rdr.GetName(1))) 
       builder.Append("</td>") 
       builder.Append("<td>") 
       builder.Append(rdr(rdr.GetName(2))) 
       builder.Append("</td>") 
       builder.Append("<td>") 
       builder.Append(rdr(rdr.GetName(3))) 
       builder.Append("</td>") 
       builder.Append("<td>") 
       builder.Append(rdr(rdr.GetName(4))) 
       builder.Append("</td>") 
       builder.Append("<td>") 
       builder.Append(rdr(rdr.GetName(5))) 
       builder.Append("</td>") 
       builder.Append("</tr>") 
      End While 
     End Using 
     builder.Append("</tbody></table>") 
     Return builder.ToString 
    End Using 
+0

Я не думаю * * это поможет, но вы должны двигаться 'Dim строитель как новый StringBuilder' раньше первого' Using' и 'Возвращение builder.ToString' к после того, как последний' Конец Using' , –

+2

Посмотрите в окне 'Call Stack 'отладчика VS при вызове исключения. Это поможет вам определить, какой метод называется, и который (-ы) продолжает называть то же самое снова и снова. См. [** Практическое руководство. Использование окна стека вызовов **] (https://msdn.microsoft.com/en-us/library/a3694ts5.aspx). –

+1

Если вы используете [Option Strict On] (https://msdn.microsoft.com/en-us/library/zcd4xwzs.aspx), он укажет на некоторые проблемы с кодом для вас. Если вы их исправите, у вас может быть рабочий код. –

ответ

0

Test это для HTML таблицы. Я не тестировал код. но html не был правильным.

builder.Append("<table class='table table-striped table-hover' data-toggle='table'><thead><tr><th>.......</th></tr></thead>") 
    Using rdr As SqlDataReader = db.ExecDataReader(qry) 
     ' Get row of data from rdr 
     While rdr.Read() 
      builder.Append("<tr><td>") 
      builder.Append(rdr(rdr.GetName(0))) 
      builder.Append("</td>") 
      builder.Append("<td>") 
      builder.Append(rdr(rdr.GetName(1))) 
      builder.Append("</td>") 
      builder.Append("<td>") 
      builder.Append(rdr(rdr.GetName(2))) 
      builder.Append("</td>") 
      builder.Append("<td>") 
      builder.Append(rdr(rdr.GetName(3))) 
      builder.Append("</td>") 
      builder.Append("<td>") 
      builder.Append(rdr(rdr.GetName(4))) 
      builder.Append("</td>") 
      builder.Append("<td>") 
      builder.Append(rdr(rdr.GetName(5))) 
      builder.Append("</td>") 
      builder.Append("</tr>") 
     End While 
    End Using