2016-11-07 56 views
0

我在查询数据库,然后用结果构建HTML表,但是当我将返回的字符串分配给容器div的InnerHtml时,我得到一个“未处理的类型为'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

我不认为* *它会帮助,但你应该在最后第一个'Using'和'返回builder.ToString'前移至'昏暗的建设者作为新StringBuilder'向'结束Using' 。 –

+2

当引发异常时,查看VS调试器的“调用栈”窗口。它将帮助您识别哪个方法称为哪个方法,以及哪个方法一遍又一遍地调用相同的方法。请参阅:[**如何:使用调用堆栈窗口**](https://msdn.microsoft.com/en-us/library/a3694ts5.aspx)。 –

+1

如果使用[Option Strict On](https://msdn.microsoft.com/en-us/library/zcd4xwzs.aspx),它会为您指出代码的一些问题。如果你修复它们,那么你可能有工作代码。 –

回答

0

测试这个为你的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