XIDE und app.config

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Post Reply
User avatar
Heinrich
Posts: 33
Joined: Wed Feb 10, 2016 4:44 pm

XIDE und app.config

Post by Heinrich »

Hallo zusammen

Aktuell bin ich dabei meine VO Programme nach xSharp zu migrieren. Gleichzeitig wechsle ich von DBF-Dateien nach SQL. Dazu habe ich mir eine DBServer Klasse geschrieben, welche die Eigenschaften vom bBrowser und den SQL-Klassen von VO vereint. Diese Klasse kann ich nun genau gleich einsetzen wie zuvor meine vom DBServer abgeleiteten eigenen Server-Klassen unter VO. Die (alten) VO Fenster arbeiten ohne Probleme mit meiner neuen DBServer Klasse.

Damit ich in Zukunft mehr als ein SQL-DB System unterstützen kann, will ich die "DbProviderFactory" Klasssen verwenden und die jeweils benötigten DataProvider DLL's via app.config deklarieren und vom Programm automatisch laden lassen.

Frage:
Gibt es einen Weg, app.config/web.config Dateien mit xSharp Programmen zu verwenden, welche mit der XIDE erstellt werden?
Bis jetzt muss ich dafür Visual Studio verwenden. Die XIDE ist mir jedoch ans Herz gewachsen, da ich mich darin "heimisch" fühle. (Clipper/VO lässt grüssen ) :-)

Viele Grüsse
Heinrich
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

XIDE und app.config

Post by wriedmann »

Hallo Heinrich,

es gibt keinen Grund, eine app.config nicht mit der XIDE verwenden zu können.

Diese Datei muss nur zur Laufzeit vorhanden sein und den Namen der Exe-Datei mit .config hinten dran haben.
Sie lässt sich ohne weiteres auch mit der XIDE editieren, dazu kann sie als bestehende Datei zum Projekt hinzugefügt werden.

Was sich über die app.config konfigurieren lässt, lässt sich normalerweise auch im Programm selber machen.

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
User avatar
Heinrich
Posts: 33
Joined: Wed Feb 10, 2016 4:44 pm

XIDE und app.config

Post by Heinrich »

Hallo Wolfgang

Danke für die prompte Antwort.
Das mit dem Namen der config-datei habe ich wohl irgendwie falsch gemacht. Jetzt läuft es.

In der Config steht nicht viel drin. (siehe Beilage)

Mit der .net Terminologie kenne ich mich noch nicht so gut aus. Wie könnte ich denn die DbProvider definition innerhalb des Programmes festlegen?

Heinrich
Attachments
config.txt
(416 Bytes) Downloaded 21 times
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

XIDE und app.config

Post by wriedmann »

Hallo Heinrich,

in diesem Artikel solltest Du die entsprechenden Informationen finden:

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/obtaining-a-dbproviderfactory

Die Connection kannst Du Dir auch selbst erzeugen, statt über die ProviderFactory zu gehen:

Code: Select all

_oConnection := SQLiteConnection{}
oBuilder := SQLiteConnectionStringBuilder{}
oBuilder:DataSource := oConnInfo:DatabaseName
cConnString := oBuilder:ToString()     
_oConnection:ConnectionString := cConnString
_oConnection:Open()


Ich habe das ganze in eine Library eingepackt, und in meinen Applikationen gibt es ein zentrales Objekt, das u.a. eine Methode GetDataTable() kennt.

Wolfgang

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
User avatar
Heinrich
Posts: 33
Joined: Wed Feb 10, 2016 4:44 pm

XIDE und app.config

Post by Heinrich »

Hallo Wolfgang

Der LINK war sehr interessant. Jetzt weiss ich wie ich die installierten Datenprovider auslesen kann. Das kann sehr hilfreich sein.

Aber ich will auf dem Client-PC keine Treiber Installationen. Zudem will ich auch keine Referenz auf einen SQL-Treiber innerhalb meiner SQL-DBServer Klasse. Die SQL Treiber sollen austauschbar sein. Ich will bei der Installation bestimmen ob mit MySql oder SQLite etc. gearbeitet wird.

Bei Deinem Beispiel "_oConnection := SQLiteConnection{}", muss ich (meiner Meinung nach) die "System.Data.SQLite" ins Programm einbinden. Das will ich umgehen, indem ich die DbProviderFactory Funktionalität nutze und bei der Programminstallation via xy.config bestimme, welcher SQL-Treiber verwendet werden soll. Die Server-Klasse selber hat nur Referenzen auf die Factory Klassen.

z. Bsp:
IF cSqlDB == "MySql"
cProvName := "MySql.Data.MySqlClient"
cConstring := "server=localhost; user=xxx; database=abc; port=3306; password=123;"
ELSE
cProvName := "System.Data.SQLite"
cConstring := "data source=c:UsersHeiniDocumentssqliteDataBaseTestDb.db"
ENDIF

und dann das Objekt so initialisieren:
oDbConnect := CreateDbConnection( cProvName, cConstring )

Mit der <programm>.exe.config funktioniert das jetzt wunderbar.

Viele Grüsse
Heinrich
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

XIDE und app.config

Post by wriedmann »

Hallo Heinrich,

die Konfiguration nur über die app.config hört sich verlockend an.
Ich bin allerdings in der Vergangenheit viel zu oft über Inkompatibilitäten zwischen den verschiedenen SQL-Datenbanken gestolpert, als dass ich eine Unabhängigkeit anstreben würde.
Zudem ist SQLite extrem tolerant, und das kann sich beim Umstieg auf restriktivere Datenbanken rächen.

Daher werde ich meine Software eigentlich immer auf eine Datenbank hin bauen, bzw. verschiedene Datenbanken über eigene austauschbare Bibliotheken anbinden. Mit Interfaces und Reflection gibt es da wirklich sehr gute Möglochkeiten.

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Post Reply