AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# DataSet + DbProviderFactory als Singleton - wie verknüpfen?
Thema durchsuchen
Ansicht
Themen-Optionen

DataSet + DbProviderFactory als Singleton - wie verknüpfen?

Ein Thema von Jürgen Thomas · begonnen am 18. Sep 2006
Antwort Antwort
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

DataSet + DbProviderFactory als Singleton - wie verknüpfen?

  Alt 18. Sep 2006, 13:10
Datenbank: Firebird • Version: 2.0 RC4 • Zugriff über: Firebird Net Provider 2.0 RC1
Hallo,

ich möchte in meinem Programm (#D 2.0) auf ein DataSet als Singleton-Klasse (d.h. wie auf ein globales Datenmodul) zugreifen. Die Verknüpfung mit der Datenbank soll per DbProviderFactory organisiert werden, damit ich später evtl. auch einen anderen Client ansprechen kann. Ich bin unsicher, wie ich meine Klasse am günstigsten organisiere.

Bitte verzichtet auf Anmerkungen, die jetzt nicht wichtig sind, sondern beachtet:
  • Fast alles, was sich auf 'Singleton' bezieht, habe ich jetzt weggelassen.
  • Kümmert Euch deshalb auch nicht um private und public; das werde ich schon richtig festlegen.
  • Als Konstruktor werde ich eine Methode verwenden, der der Name der Datenbank und ein Kürzel für den SQL-Provider sowie UserName und Password übergeben werden.
  • Die von DataSet abgeleitete Klasse soll auch die Zugriffe auf die DB regeln (Select, Insert, Update, Delete, SProcs), also auch SqlCommands ausführen.
Variante 1: Basisklasse ist DataSet, darin enthalten ein DbProviderFactory.
Code:
public sealed class ds : System.Data.DataSet {
    private System.Data.Common.DbProviderFactory prov;
    //  usw.
Variante 2: Basisklasse ist DbProviderFactory, darin enthalten ein DataSet.
Code:
public sealed class cd : System.Data.Common.DbProviderFactory {
    private System.Data.DataSet ds;
    //  usw.
Variante 3: Von DbProviderFactory und DataSet leite ich getrennte Klassen ab, von ds greife ich auf cd zu.
Code:
public sealed class cd : System.Data.Common.DbProviderFactory
//  usw. alle Details
public sealed class ds : System.Data.DataSet {
    private JThomas.Data.cd prov;
    //  usw.
    //  im Konstruktor wird ein Verweis auf cd übergeben:
        prov = cd;
[/edit]Zusatzinformation: Es handelt sich um ein typisiertes DataSet, das durch xsd.exe automatisch erzeugt und als public sealed class deklariert wurde. Ein solches DataSet kann also nicht geerbt werden; und von Änderungen im Quelltext ist dringend abzuraten für den Fall, dass es mit xsd.exe erneut erstellt wird. Konsequenz: Variante 1 ist faktisch nicht möglich; Variante 2 ist zu empfehlen.

Bitte nennt mir Gesichtspunkte, die für und gegen diese Varianten sprechen, oder auch Alternativen.

Danke! Jürgen

PS. In der Zukunft wird es mehrere so aufgebaute Klassen geben; eine allgemeine Lösung ist deshalb sehr hilfreich.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz