Announcement

Collapse
No announcement yet.

datenbankzugriff mit C#

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • datenbankzugriff mit C#

    Hallo,

    ich beschäftige mich gerade mit datenbankzugriff.
    Mir ist das Prinzip noch nicht wirklich klar.
    Welche komponente erfüllt welche funktion?
    oder anders gefragt:
    was brauche ich als minimalaustattung um auf eine ms sql-serverdatenbank zuzugreifen und die daten in einem datagrid anzuzeigen?

    Wenn ich eine Datenbank an eingabefelder hängen will(gell, da gibt es keine spziellen so wie in Delphi oder), dann habe ich was von bindings gelesen, aber verstanden habe ich es nicht wirklich!

    Vielleicht kann jemand(ganz geschickt wäre ein Ex-Delphianer) etwas licht ins dunkel bringen!
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo!

    Die Datenbindung ist nicht schnell zu erklären. Es gabe einen guten Artikel im dot.net Magazin Ausgabe 10.2006 über "Mysterium BindingContext" (von Hr. A. Kosch) hierin wurde einiges erklärt.
    (siehe dann auch: Entwickler-Forum > .NET > Leserbriefe zum dot.net magazin > Frage zum Artikel: Mysterium BindingContex)

    Als Buch über ADO.NET kann ich das Buch von David Sceppa "ADO.NET 2.0" empfehlen. Allerdings werden nicht alle "geheimnisse" der Datenbindung erklärt.(Achtung! Buch behandelt VS2005 und ADO.NET 2.0)

    mfg
    Thomas

    Comment


    • #3
      Hallo Markus,

      Vielleicht kann jemand(ganz geschickt wäre ein Ex-Delphianer) etwas licht ins dunkel bringen!
      der Grobaufbau von ADO.NET unterscheidet zwischen dem datenbankunabhängigen Teil für das Speichern/Verwalten der Datenmengen (DataSet) und den datenbankspezifischen Zugriffsklassen, die für die Anbindung einer ganz bestimmten Datenbank an das universelle DataSet zuständig sind. Während es bei Delphi üblich war, dass die Datenbankzugriffsschicht für verschiedene Datenbanken zuständig ist, trennt ADO.NET diesen Teil an spezialisierte Zugriffsklassen ab.

      Der nächste große Unterschied zu Delphi besteht darin, dass es in ADO.NET keinen echten Datensatzzeiger gibt, sondern das Formular zur gleichen Zeit auf beliebig viele Datensätze zugreifen kann. Das DataSet arbeitet mengenorientiert, so dass ein Datensatzzeiger bei Bedarf simuliert werden muss (CurrencyManager in .NET 1.x und BindingSource-Komponente in .NET 2.0).

      Ein weiterer Unterschied zu Delphi besteht darin, dass es keine Unterscheidung zwischen normalen Komponenten und datensensitiven Komponenten (alse TEdit vs. TDBEdit) gibt. Die Datenbindung von .NET ist extrem flexibel, so dass jede öffentliche Eigenschaft einer beliebigen Klasse angebunden werden kann. Man kann zum Beispiel sogar eine TextBox an eine TextBox als Datenquelle binden.

      Beim Thema Datenbankzugriff sind die Änderungen von .NET 1.x auf 2.0 sehr groß. Aus diesem Grund ist es entscheidend, für welche .NET-Framework-Version die Beschreibung benötigt wird. Wenn Du noch .NET 1.x braucht, passt mein Buch Crashkurs .NET für Delphianer. Allerdings sind die Vorteile von .NET 2.0 so gravierend, dass Heute wohl niemand mehr ein Projekt mit VS.NET 2003 freiwillig weiterpflegt.

      Comment


      • #4
        Hallo Andreas,

        datenbankspezifischen Zugriffsklassen bedeutet, dass es keine ttable oder tquery-komponente gibt, mit der man auf alle datenbanken zugreifen kann sofern der richtige treiber installiert ist, oder?

        noch eine andere "dumme" Frage:
        ADO.NET ist ein allgemeiner Begriff für Datenbankzugriff in C# oder was ist ADO.NET?

        Puh! wie stelle ich mir mengenorientiert vor?
        was ist der Sinn und Zweck von Mengenorientierung?

        Dein dritter Absatz klingt echt cool! Gefällt mir!
        Ich arbeite mit dem Framework 1.1!
        Dein Buch gibt es beim Software und Supportverlag oder?

        Vielen Dank für Deine ausführliche Antwort!

        Achja, auch Danke an Thomas!
        Herzliche Grüße

        Markus Lemcke
        barrierefreies Webdesign

        Comment


        • #5
          Hallo Markus,

          ...dass es keine ttable oder tquery-komponente gibt..
          es gibt sehr viele von diesen Komponenten:

          a) OleDbCommand kann SQL über einen OLE DB-Provider an jede Datenbank schicken, für die es einen OLE DB-Provider gibt. Es gilt dann das Prinzip des kleinsten gemeinsamen Nenners.

          b) SqlCommand kann SQL direkt zum MS SQL Server schicken, ohne das etwas Zusätzliches im Spiel ist. Daher kann dieser Zugriffsweg alle Optionen nutzen, die der MS SQL Server anbietet.

          c) usw.



          was ist der Sinn und Zweck von Mengenorientierung?
          Angenommen, die Lohnbuchhaltung muss allen Mitarbeitern einer bestimmten Abteilung einen Gehalts-Bonus gutschreiben. Für eine mengenorientierte SQL-Datenbank ist dies kein Problem, da eine einzige UPDATE-Anweisung ausreicht, die in der WHERE-Einschränkung die Datenmenge der Personal-Tabelle beschreibt, die in den Genuss der Gehaltserhöhung kommen sollen:

          Code:
          UPDATE dbo.Personal 
            SET gehalt = gehalt + 100
          WHERE
            abteilung_id = 3;
          Die UPDATE-Anweisung überträgt den Job komplett an den SQL Server, wobei es keine Rolle spielt, wie viele Angestellte zu dieser Abteilung gehören. Alle Datensätze, die über die WHERE-Einschränkung zur gleichen Menge gehören, werden mit einem Aufruf aktualisiert.

          Bei einem datensatzorientierten Ansatz müsste die gleiche Aufgabe viel umständlicher erledigt werden. Das Programm startet eine Schleife, um jeden Datensatz einzeln auszulesen, den Wert der Spalte gehalt zu erhöhen und dann in die Datenbank zurückzuschreiben.

          Der Unterschied wird deutlich, wenn man 1000 zu aktualisierende Datensätze hat:
          a) Mengenorientiert: 1 Aufruf der Datenbank
          b) Datensatzorientiert: 1000 Aufrufe der Datenbank

          Comment


          • #6
            Hallo Andreas,

            vielen Dank für deine tolle erklärung!
            habe alles verstanden!
            Herzliche Grüße

            Markus Lemcke
            barrierefreies Webdesign

            Comment

            Working...
            X