Datenbankentwicklung und Weitergabe [System.Data.SQLite]

28/09/2009 - 14:53 von Kurt v. Wedelin | Report spam
Hallo!

Mit C# entwickle ich bereits seit làngeren, allerdings hab ich mich
unglücklicher Weise immer um Projekte beworben bei denen ich keine
Datenbanken einsetzen muste.

Nun steh ich da und hab nicht wirklich nen Plan wie ich das alles
sinnvoll umsetzen soll.

Folgendes:
Ich brauche eine Anwendung, mit der NNTP gesprochen werden soll, was auch
kein Problem ist. Die Daten zu Gruppen und Artikeln müssen zwingend als
SQLite-Datenbank-Dateien strukturiert abgelegt werden da ein
weiterverarbeitendens, fertiges Programm diese in eben sollchen erwartet.

OK: Hab ich mich schlau gemacht was dazu für eine Library gut geeignet
ist. Ich bin auf System.Data.Sqlite gestoßen was sich als sogenannter ADO-
Net Provider auch wunderbar in Visual Studio einbinden làst.

Die NNTP-Library hab ich fertig. Diese soll spàter incl. der darin noch
zu definierenden Datasets in eine Win-Form-Projekt eingebunden werden.

Folgendes hab ich bisher getan:

1. Im "Server-Explorer" hab ich 3 neue Verbindungen angelegt.
Die erste zur SQLite-Datei in der Tabellen für NNTP-Nutzerprofile
liegen. Die Zweite für Gruppendaten. Und die Dritte für Artikel
in einer Gruppe (davon hat dann jede Gruppe ihre eigene DB-Datei)
2. Innerhalb der 3 Datei hab ich die leeren, benötigten Tabellen angelegt
3. Weiterhin hab ich 3 Datasets angelegt in die ich die jeweiligen
Tabellen der 3 Datenbanken per Drag&Drop gezogen habe.

Doch nun fangen meine Probleme an! :-(

Ich hab hier wohl ein grundlegendes Verstàndnisproblem bei der ganzen
Nutzung dieser Datenbanksache.

Wenn ich mir die Eigenschaft "Connection" der Tableadapter ansehe, die
automatisch angelegt wurden, so steht da bereits der Pfad zur jeweiligen
genutzten SQLite-Datei hartcodiert drin. Das funktioniert jetzt natürlich
erstmal wunderbar, aber spàtestens wenn diese Dateien nicht mehr im
angegebenen Pfad liegen wirds unlustig. Ja und das ist ja bereits beim
Starten der Winformanwendung der Fall, in die ich die gerade definierten
Datasets per Designer hinzufüge. Die hart codierten Verbindungsdaten
werden ja bereits in der Library definiert.

Ist ja nicht so das ich mir hier keine Gedanken machen würde, aber wie
stelle ich es vernünftig an das ich einer Klasse der Library von Außen
(damit meine ich aus dem WinForms Projekt das diese Referenziert)
mitteilen kann welche Verbindungszeichenkette für einen Tabeleadapter die
gerade Richtige ist?

Ich muß dem Tabeleadaptern ja vor deren eigentlicher Initialisierung im
WinForms Projekt bereits mitteilen welcher Verbindungsstring genutzt
werden soll, da diese ja sonst sehr wahrscheinlich erstmal mit einer DB-
Datei initialisieren die es auf dem System garnicht gibt.

Meine Überlegungen gehen jeztz dahin, das ich die Datasets + deren
Tableadapter garnicht im Designmodus der Winform setzen kann, sondern
diese zwingend manual im Code initialisiere, nachdem ich den jeweils
gebrauchten Verbindungsstring in den Appsettings der Library vorher
bereits den entsprechenden Wert zuweise. Wàr das so eine übliche
Vorgehensweise oder verrenne ich mich da in irgendwas Unnötigem?

Dank & Gruß
Kurt v. Wedelin
 

Lesen sie die antworten

#1 Peter Fleischer
28/09/2009 - 15:34 | Warnen spam
"Kurt v. Wedelin" schrieb im Newsbeitrag
news:h9qbk1$52g$00$

Doch nun fangen meine Probleme an! :-(
...
Wenn ich mir die Eigenschaft "Connection" der Tableadapter ansehe, die
automatisch angelegt wurden, so steht da bereits der Pfad zur jeweiligen
genutzten SQLite-Datei hartcodiert drin. Das funktioniert jetzt natürlich
erstmal wunderbar, aber spàtestens wenn diese Dateien nicht mehr im
angegebenen Pfad liegen wirds unlustig. Ja und das ist ja bereits beim
Starten der Winformanwendung der Fall, in die ich die gerade definierten
Datasets per Designer hinzufüge. Die hart codierten Verbindungsdaten
werden ja bereits in der Library definiert.



Hi Kurt,
der Vorteil der Designer ist das schnelle Zusammenklicken einer Anwendung.
Wenn du aber von dem generierten Standardablauf abwichen willst, dann ist
Handarbeit angesagt. Für die Lösung deines Problems gibt es mehrere Wege:

1. Der ConnectionString steht in der Config-Datei (im Anwendungsordner). Der
Administrator kann diesen Eintrag beim Anwender anpassen.

oder

2. Der genutzte ConnectionString wird vor dem Fill bzw. Update dem
TableAdapter durch eine vorgelagerte eigene Anweisung zugeweisen, damit
dieser genutzt wird.

Ist ja nicht so das ich mir hier keine Gedanken machen würde, aber wie
stelle ich es vernünftig an das ich einer Klasse der Library von Außen
(damit meine ich aus dem WinForms Projekt das diese Referenziert)
mitteilen kann welche Verbindungszeichenkette für einen Tabeleadapter die
gerade Richtige ist?



Der TableAdapter hat eine Connection-Eigenschaft, der man ein eigenes
Connection-Objekt zuweisen kann. Der restliche vom Designer generierte Code
kann unveràndert genutzt werden.

Ich muß dem Tabeleadaptern ja vor deren eigentlicher Initialisierung im
WinForms Projekt bereits mitteilen welcher Verbindungsstring genutzt
werden soll, da diese ja sonst sehr wahrscheinlich erstmal mit einer DB-
Datei initialisieren die es auf dem System garnicht gibt.



Wenn du mit dem Designer abreitest, wird im Form_Load ein Fill eingetragen.
Davor kann man ein neues/anderes Connection-Objekt zuweisen.

Meine Überlegungen gehen jeztz dahin, das ich die Datasets + deren
Tableadapter garnicht im Designmodus der Winform setzen kann, sondern
diese zwingend manual im Code initialisiere, nachdem ich den jeweils
gebrauchten Verbindungsstring in den Appsettings der Library vorher
bereits den entsprechenden Wert zuweise. Wàr das so eine übliche
Vorgehensweise oder verrenne ich mich da in irgendwas Unnötigem?



Diese Arbeitsweise solltest du als "Anfànger" favorisieren, um die Innereien
besser zu verstehen. Wenn du dann alles verstanden hast, findest du auch
problemlos die Punkte, wo du eingreifen kannst.


Viele Grüsse
Peter

Ähnliche fragen