Announcement

Collapse
No announcement yet.

Datenbankunabhängige Anwendung, Verwendung von Ansichten

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

  • Datenbankunabhängige Anwendung, Verwendung von Ansichten

    Hallo,

    ich bin Neuling sowohl bei der Datenbankprogrammierung als auch unter ADO.NET.

    Ich programmiere mit C# und möchte nun eine Datenbank-Anwendung erstellen, die unter verschiedenen Datenbank-Providern laufen soll (Sybase, MS Sql Server).
    Dafür stellt ja .NET 2.0 die Basis mit der DBProviderFactory zur Verfügung.

    Der Zugriff auf eine einzelne Tabelle funktioniert ganz gut, möchte ich jedoch mit Ansichten arbeiten, ergeben sich einige Fragen:

    1. Die Daten werden z.B. in einer DataGridView angezeigt und der Benutzer soll die Daten dort auch ändern können. Die DataGridView ist mittels DataSet mit einer Ansicht (View) aus verschiedenen Tabellen verknüpft. Die geänderten Daten sollen in die jeweiligen Tabellen zurückgeschrieben werden. Ist dieser Weg empfehlenswert oder sollte zur Dateneingabe grundsätzlich ein eigenständiger Benutzerdialog erscheinen?

    2. Da das Aktualisieren mit dem DbCommandBuilder gegen mehrere Basistabellen nicht funktioniert, habe ich versucht, mit Sql eigene Update-Befehle zu schreiben.
    Für die MS Sql-Datenbanken müssen benannte Parameter (@p1, @p2, usw.) verwendet werden, für die Sybase-Datenbank jedoch das "?" als Platzhalter.
    Wie lässt sich dieses Problem lösen bzw. gibt es vielleicht doch die Möglichkeit, mit dem CommandBuilder zu arbeiten?

    3. Kann ich typisierte DataSets verwenden, wenn ich unabhängig vom Datenbanksystem sein will?

    Danke im Voraus.

    Gruß
    Frank

  • #2
    Hallo Frank,

    ich kann Dir zumindest Teilantworten geben.
    Originally posted by Frank H
    1. Die Daten werden z.B. in einer DataGridView angezeigt und der Benutzer soll die Daten dort auch ändern können. Die DataGridView ist mittels DataSet mit einer Ansicht (View) aus verschiedenen Tabellen verknüpft. Die geänderten Daten sollen in die jeweiligen Tabellen zurückgeschrieben werden. Ist dieser Weg empfehlenswert oder sollte zur Dateneingabe grundsätzlich ein eigenständiger Benutzerdialog erscheinen?
    Dieser Weg ist gangbar; ich schlage aber vor (auch wegen des Problems unter 2), im DataSet die Tabellen so zu trennen wie in der Datenbank. Für die Verknüpfung im DataSet gibt es DataRelations; auch im DataGridView können die Verknüpfungen genutzt werden.

    Ein Verfahren dafür habe ich unter DataGridView: Master/Detail über ComboBox beschrieben.

    Hinweis zum Einlesen der Daten: zuerst DataSet.EnforceConstraints = false festlegen, dann alle Daten einlesen, dann Constraints reaktivieren.

    2. Da das Aktualisieren mit dem DbCommandBuilder gegen mehrere Basistabellen nicht funktioniert, habe ich versucht, mit Sql eigene Update-Befehle zu schreiben.
    Für die MS Sql-Datenbanken müssen benannte Parameter (@p1, @p2, usw.) verwendet werden, für die Sybase-Datenbank jedoch das "?" als Platzhalter.
    Wie lässt sich dieses Problem lösen bzw. gibt es vielleicht doch die Möglichkeit, mit dem CommandBuilder zu arbeiten?
    Wenn das Verfahren unter 1 berücksichtigt wird, ist die entscheidende Voraussetzung für die Nutzung des DbCommandBuilder gegeben. Allerdings habe ich selbst die DB-Unabhängigkeit bisher nur zum Einlesen benutzt, muss mich deshalb für eine genauere Antwort zurückhalten.

    3. Kann ich typisierte DataSets verwenden, wenn ich unabhängig vom Datenbanksystem sein will?
    Eindeutig ja. Das DataSet hat nichts mit der DB-Verbindung zu tun, sondern repräsentiert "nur" die Daten im Arbeitsspeicher.

    Viel Erfolg! Jürgen

    Comment

    Working...
    X