![]() |
Datenbank: Firebird • Version: 2.0 RC4 • Zugriff über: Firebird Net Provider 2.0 RC1
DataSet + DbProviderFactory als Singleton - wie verknüpfen?
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:
Code:
Variante 2: Basisklasse ist DbProviderFactory, darin enthalten ein DataSet.
public sealed class ds : System.Data.DataSet {
private System.Data.Common.DbProviderFactory prov; // usw.
Code:
Variante 3: Von DbProviderFactory und DataSet leite ich getrennte Klassen ab, von ds greife ich auf cd zu.
public sealed class cd : System.Data.Common.DbProviderFactory {
private System.Data.DataSet ds; // usw.
Code:
[/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.
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; 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz