2016-11-21 4 views
0

Ich habe diese Schleife verwendet, um Daten anzuzeigen, die die Google-Diagramm-Diagramm mitGibt es eine schnellere Möglichkeit, Daten aus einer Tabelle abzurufen?

Das Problem ist, dass der Graph eine Menge Daten enthält, und es dauert eine lange Zeit Die Frage Ausleihen gemacht werden soll, ob es ein schneller Weg, um die Datenbank zu übergeben?

 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

Wie viele Zeilen in xdata? –

+0

Es hängt davon ab, was Sie wählen, um ein Diagramm anzuzeigen, können Tausende erreichen –

+0

haben Sie die Zeit gemessen, um die Daten aus der Datenbank zu laden und dann das Rendering zu messen? Tausende von Aufzeichnungen sollten keine anständige Datenbank hervorheben. Welchen benutzen Sie und welchen Fahrer? –

Antwort

1

Sie sollten eine StringBuilder verwenden, wenn Sie Hunderte von Saiten gehen zu verketten. .NET-Zeichenfolgen sind unveränderbar, dh bei jeder Änderung muss ein neues Objekt erstellt werden.

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 

Und wenn Sie Parsen der Daten durchgeführt:

Return sb.ToString 
+0

Die Methode muss eine normale Zeichenfolge zurückgeben, die Textfeld übertragen wird. –

+0

Sie können dafür StringBuilder.ToString verwenden. Sie verwenden nur den StringBuilder, um die tatsächliche Zeichenfolge zu erstellen, die Ihre Schleife erheblich beschleunigen sollte. Ich füge ein Beispiel zu meiner Antwort hinzu. – Whitey

+0

Ein Beispiel zu meiner Antwort hinzugefügt, lassen Sie mich wissen, wenn Sie immer noch Probleme haben. – Whitey

Verwandte Themen