Oledb TableAdapter Fill Oder Update

  • VB.NET
  • .NET (FX) 4.0

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

    Oledb TableAdapter Fill Oder Update

    Hallo Leute,

    beschäftige mich mit den TableAdapter und Access.
    Im Moment bin ich etwas Durcheinander was TableAdapter.Fill und TableAdapter.Update angeht.
    Bin inzwischen soweit das ich mit TableAdapter.Fill eine Access-Tabelle in eine DataTable lade und sie in eine
    Datagridview über die Datasource-Eigenschaft anzeigen kann.
    Das Fill fügt auch ein Datensatz in die Access-Tabelle.
    Aber für was brauch ich jetzt TableAdapter.Update.
    Der macht bei mir gar nix.
    Danke schonmal im Vorraus


    Hier ist mein bisheriger Code:

    VB.NET-Quellcode

    1. Dim connection As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db1.accdb")
    2. Dim queryString As String = "INSERT INTO Tabelle1 (VName,NName) VALUES ('Vorname','Nachname')"
    3. Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(queryString, connection)
    4. Dim Tabelle As New DataTable
    5. adapter.Fill(Tabelle)
    6. 'adapter.Update(Tabelle)


    Dieser Code fügt einen neuen Datensatz in die Access-Tabelle was eigentlich nicht richtig ist ,Oder?
    Guck dir die Adapter-Klasse mal im ObjectBrowser an.
    Du wirst feststellen, son Adapter verfügt über 4 Commands: Select, Delete, Insert, Update.
    Das korrespondiert mit den grundlegenden Anforderungen an Daten-Persistierung - CRUD.

    Ein korrekt konfigurierter DataAdapter unterstützt also komplettes Crud.

    Nun kannst du natürlich auch iwas komisches hinein-konfigurieren, etwa das Update-Command in der SelectCommand-Property anlegen.

    Geht schon, ist aber nicht im Sinne des Erfinders.

    Im Sinne des Erfinders ist, mit Adapter.Fill() Daten abzurufen, und mit Adapter.Update() alle anderen 3 Crud-Elemente mit nur einem einzigen Befehl abzusetzen.
    gugge auch Tipp & Trick: DbParameter
    Weil so wie du die Commands konfigurierst ist fehleranfällig und eine Einladung für SqlInjection-Angriffe. Also ist einfach absolutely NoGo Verboten Scheiterhaufen.
    Und auch gibt es keinen Grund, nicht von vornherein mit vernünftigen Benamungen zu arbeiten - Tabelle1 erschließt der ganzen Anwendung das ganz sichere Schicksal, neu gemacht werden zu müssen.
    Und ich empfehle immer, erst Datenmodellierung und Databinding zu erlernen, bevor man seine erste DB aufsetzt.
    Ausser der Benamung hab ich nu noch keinen konkreten ModellFehler gefunden, aber eiglich gehe ich davon aus, dass du zB. den Primärkey vergessen hast ;)

    Ja, und ein typisertes Dataset haste auch nicht, hmm.

    Also am besten gehste Datenverarbeitungs-Vorraussetzungen ganz sorgfältig schritt für schritt durch.