2016-11-21 21 views
0

我已經使用這個循環來顯示圖形使用谷歌圖表數據是否有更快的方式從表中檢索數據?

的問題是,圖中包含了大量的數據,它需要被提出借給 的問題是,是否有很長一段時間一個更快的方式來傳遞數據庫?

 dRow As Data.DataRow In xdata.Rows 
         If j = 0 Then 
          TempDate = Format(CDate(dRow.Item(0)), "dd/MM/yyyy") 
          MyXML += "[new Date(" & TempDate.Year & "," & TempDate.Month - 1 & ")" 
          j += 1 
         Else 
          TempDate = Format(CDate(dRow.Item(0)), "dd/MM/yyyy") 
          MyXML += ",[new Date(" & TempDate.Year & "," & TempDate.Month - 1 & ")" 
          j += 1 
         End If 
         For colIdx As Byte = 1 To xdata.Columns.Count - 1 
          If colIdx > 0 Then 
           If (dRow.Item(colIdx)).ToString <> Nothing Then 
            MyXML += "," & (dRow.Item(colIdx)).ToString 
           Else 
            MyXML += "," & "0" 
           End If 
          End If 

` 
+0

在外部數據有多少行? –

+0

這取決於你選擇顯示一個圖形,可以達到千分之一 –

+0

你測量了從數據庫加載數據然後測量渲染的時間嗎?成千上萬的記錄不應該強調任何像樣的數據庫。你使用哪個和哪個驅動程序? –

回答

1

如果您打算連接數百個字符串,則應該使用StringBuilder。 .NET字符串是不可變的,這意味着每次更改時都必須創建一個新對象。

Dim sb As New StringBuilder 
For dRow As Data.DataRow In xdata.Rows 
    If j = 0 Then 
     TempDate = Format(CDate(dRow.Item(0)), "dd/MM/yyyy") 
     sb.Append("[new Date(" & TempDate.Year & "," & TempDate.Month - 1 & ")") 
     j += 1 
    Else 
     TempDate = Format(CDate(dRow.Item(0)), "dd/MM/yyyy") 
     sb.Append(",[new Date(" & TempDate.Year & "," & TempDate.Month - 1 & ")") 
     j += 1 
    End If 
    For colIdx As Byte = 1 To xdata.Columns.Count - 1 
     If colIdx > 0 Then 
      If (dRow.Item(colIdx)).ToString <> Nothing Then 
       sb.Append("," & (dRow.Item(colIdx)).ToString) 
      Else 
       sb.Append("," & "0") 
      End If 
     End If 
    Next 
Next 

而且當你完成解析數據:

Return sb.ToString 
+0

該方法必須返回一個正常的字符串,它是傳輸的文本框 –

+0

您可以使用StringBuilder.ToString。您只需使用StringBuilder來構建實際的字符串,這將顯着加快您的循環。我會給我的答案添加一個例子。 – Whitey

+0

爲我的回答添加了一個示例,如果您仍有問題,請告訴我。 – Whitey

相關問題