SQL oder DataGridView!?

  • VB.NET
  • .NET 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    SQL oder DataGridView!?

    Moin! :)
    Ich möchte gerne Informationen verarbeiten.
    Ich habe eine Sub mit dem Namen „StatistikenGeldAuslesen“.
    Wenn ich das Projekt starte, wird eine Tabelle aus der SQL-Datenbank gelesen.
    Diese wird dann im Datagridview1 angezeigt!
    Jetzt meine Frage:

    Ich lese die wichtigen Informationen per SQL-Befehl aus, zum Beispiel MAX.
    Der Nachteil ist, ich möchte eine Anwendung programmieren die Ressourcen schont.
    Deshalb möchte ich nicht für jedes Label(Information), ein Befehl an den Server senden.
    Deswegen möchte ich, diese lokal verarbeiten.
    Kann mir jemand bitte helfen?
    Ich benötige (Min, Max, AVG, Sum) für ein DataGridView.
    Oder ist mein Vorhaben bereits in Ordnung?
    Da mein Code jetzt schon so läuft wie ich das möchte.
    Was empfehlt ihr mir?
    So lassen oder die Ressourcen schonen ohne SQL?
    Freue mich auf eure Hilfe! ^^
    BIG THX

    VB.NET-Quellcode

    1. ' MAX Guthaben anzeigen...
    2. Dim sql_code1 As String = "SELECT MAX(Guthaben) FROM [dbo].[tblGuthaben]"
    3. Dim obj1 As Decimal = CDec(SQL.TabelleLesenErsterWert(sql_code1))
    4. Me.lblGeldVerdienstMAX.Text = obj1.ToString("C")
    5. ' AVG Guthaben anzeigen..
    6. Dim sql_code2 As String = "SELECT AVG(Guthaben) FROM [dbo].[tblGuthaben]"
    7. Dim obj2 As Decimal = CDec(SQL.TabelleLesenErsterWert(sql_code2))
    8. Me.lblGeldVerdienstAVG.Text = obj2.ToString("C")
    9. ' MIN Guthaben anzeigen..
    10. Dim sql_code3 As String = "SELECT MIN(Guthaben) FROM [dbo].[tblGuthaben]"
    11. Dim obj3 As Decimal = CDec(SQL.TabelleLesenErsterWert(sql_code3))
    12. Me.lblGeldVerdienstMIN.Text = obj3.ToString("C")


    Visual Basic.NET 8o
    MS-SQL
    8o
    Ressourcen schonen. Naja, dann wär wohl das einfachste, wenn Du alle Daten, die Du brauchst, zu Beginn aus der DB ziehst, diese in ein tDS schiebst, dann sind die Daten alle in DataTables und somit im RAM und dann kannst Du damit DB-frei auswerten, rumrechnen etc. Nur eben alle Daten auf einmal aus der DB zu holen, kann dauern.

    btw: Dein Threadtitel ist etwas irreführend. Das eine ist ne Abfragesprache, das andere ein CE.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @VaporiZed
    Danke, für deine schnelle Antwort. :thumbup:
    Als Titel ist mir gerade nichts Besseres eingefallen.
    Meinst du, ich könnte den Code so lassen?
    Oder wäre es doch besser, so wenig SQL Befehle zusenden.
    Da mein Code bereits sehr gut läuft!
    Visual Basic.NET 8o
    MS-SQL
    8o
    Das einzig Sinnvolle seh ich für eine Beantwortung in Performancetests. Wenn die Abfrage zeitlich kaum spürbar ist, dann belass es bei dem, was Du hast. Eine sinnvolle Messung hilft bei einer Entscheidungsfindung meist weiter. Alles andere ist Spekulatiusbacken.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @VaporiZed
    Vielen Dank, für deine Antwort.

    @an alle
    Mir wurde gesagt, das SQL genau deshalb gemacht worden ist.
    Deshalb ist es viel sinnvoller SQL-Abfragen zu senden.
    Da ein Server sowieso viele Anfragen bekommt.
    Dann kommt es auf die paar Abfragen auch nicht mehr an.
    Da, mein Code so auch perfekt läuft.
    Deshalb lasse ich zum Informationen auslesen, einfach die SQL-Abfrage drin.
    Weil das Gegenargument ist, wenn ich nun nur mit dem DataGridView1 arbeite, wird beim Sortieren der Werte die CPU beansprucht.
    Deswegen lieber eine SQL-Abfrage, als nochmals die zu CPU beanspruchen.
    Visual Basic.NET 8o
    MS-SQL
    8o
    Fasse deine 3 Abfragen zu einer Zusammen...

    allgemein zur Performance einer DB:
    1. Es gilt so selten wie möglich eine Verbindung zur DB herzustellen da jeder Verbindungsaufbau Zeit frisst.

    2. Zudem überlege welche Daten wirklich benötigt werden und welche nur bei Bedarf benötigt werden und daher erst auf Abruf nachgeladen werden -> „lazy loading“.

    3. Wenn man Daten nachläd (siehe 2.), dann prüfen ob man diese im Speicher hält oder erneut läd wenn sie wieder benötigt werden.

    Edit: Der Thread Titel ist irgendwie nicht so sinnig...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Cheffboss schrieb:

    Mir wurde gesagt, das SQL genau deshalb gemacht worden ist.
    Deshalb ist es viel sinnvoller SQL-Abfragen zu senden.
    sicher ists dafür gemacht.
    Aber seit wohl zwei Jahrzehnten gibts in Hochsprachen das Bestreben, Sql-Scripte möglichst wegzukapseln und aus der Programmierung quasi herauszuhalten.
    Weil Sql lässt sich eiglich nicht debuggen, und ist daher auch schlecht wartbar.

    Und wg Performance muss man gucken. Ein Sql-Script gegen die DB abzufahren, und die Antwort rückzuübersetzen in den Kontext der Hochsprache ist ein enormer Overhead, der sich eiglich erst lohnt, wenn man auch paar mehr Daten abruft.