Dataset Probleme

  • VB.NET

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

    Dataset Probleme

    Hallo Zusammen,

    ich möchte Zugriff auf eine Datenbank über ein Modul realisieren, da die Anwendung später schnell zu erweitern sein soll.

    Ich habe es so versucht:


    Module DB_neu
    Private myOleDbDataAdapter As New OleDbDataAdapter
    Private preload_ds As New DataSet
    Private Con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & My.Settings.Dateipfad & "")


    Public Function Tabelle_laden(ByVal table As String)
    Try
    preload_ds.Tables.Remove(table)
    Catch ex As Exception
    Exit Try
    End Try
    'Verbinden
    Con.Open()
    ' SelectCommand erstellen welches die "Select-Abfrage" gegen die
    ' Datenbank beinhaltet
    Dim myOleDbSelectCommand As New OleDb.OleDbCommand
    myOleDbSelectCommand.Connection = Con
    myOleDbSelectCommand.CommandText = "SELECT * FROM " & table.ToString
    ' DataAdapter mit dem SelectCommand verbinden
    myOleDbDataAdapter.SelectCommand = myOleDbSelectCommand
    ' und mit dem DataAdapter das DataSet füllen
    myOleDbDataAdapter.Fill(preload_ds, table.ToString)
    'Verdingung schließen
    Con.Close()
    Return True
    End Function


    Public Function Daten_an_DGV(ByVal return_dgv As DataGridView, ByVal table As String)
    return_dgv.DataSource = preload_ds
    return_dgv.DataMember = table.ToString
    Return True
    End Function


    ublic Function SpeichereDSChanges(ByVal table As String)

    Try
    Con.Open()
    Dim myOleDbDA As New OleDb.OleDbDataAdapter("SELECT * FROM " & table.ToString, Con)
    Dim commandBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(myOleDbDA)
    myOleDbDA.Update(preload_ds, table.ToString)
    Catch ex As Exception
    Con.Close()
    Return False
    End Try
    Con.Close()
    Return True
    End Function

    End Module

    Diese drei Funktionen werden benutzt um Tabellen ins Dataset zu laden, Tabellen aus dem Dataset an ein DGV zu binden und um eine geänderte Tabelle wieder in die Datenbank zu speichern.

    Leider funktioniert mir das Speichern der Daten einfach nicht, obwohl diese ins Dataset übernommen werden.

    Vielleicht sieht ja jemand den Fehler, habe schon etliche Sachen versucht, aber es funktioniert nichts, Fehler wird auch keiner ausgegeben.
    Sind Schlüsselspalten in den Tabellen vorhanden?
    Wenn keine INSERT-Anweisungen, UPDATE-Anweisungen oder DELETE-Anweisungen angegeben sind, wird von der Update-Methode eine Ausnahme generiert.
    Mache einmal deine TryCatch-Anweisungen weg...
    Update-Anweisung (MSDN)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    Ich würde dir sehr den typisierten Ansatz empfehlen, mit einem typisierten Dataset.

    Bei typDataset programmierst du typsicher, und gewinnst mit den vier Views eine Fülle von Präsentations-Möglichkeiten, die alle die Standard-Anforderungen der basic CRUD - Funktionalität bereits mitbringen.
    Hingegen bei deim untypisierten Ansatz kriegst du einen Vogel, wenn du auch nur 3 Tabellen einigermaßen präsentieren wilst.
    Auch annähernd unvermeidbar, dass man gravierende Architektur-Fehler einbaut.

    Ich hab auch einen (sehr trickreichen) generischen Datenbank-Zugriff programmiert, bei dem man sich ums Sql ühaupt nicht mehr kümmern muß, weil es automatisch, anhand der zu befüllenden typisierten DataTables die DataAdapter richtig konfiguriert: DBExtensions