2016-11-07 37 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