Zum Hauptinhalt springen

Datenbankverbindung holen

Zur Abfrage von Daten von der Datenbank muss zuerst eine Datenbankverbindung zur Verfügung stehen.

Innerhalb eines "Dialog Plugins" kann man die Datenbankverbindung (Connection) folgendermaßen holen.

Connection cn = this.Connection;

Befindet man sich nicht in einem "Dialog Plugin" oder will man auf eine andere Datenbankverbindung zugreifen kann man die Verbindung über das Project Object holen.

Connection cn = this.Project.GetDbConnection("DBNAME");
Connection cn = this.Application.Project.GetDbConnection("DBNAME");
Connection cn = this.Application.Repository.GetDbConnection("DBNAME");
Connection cn = this.Application.Project.Repository.GetDbConnection("DBNAME");

Hierbei muss der Datenbankverbindungsname (im Beispiel "DBNAME") vorhanden und bekannt sein.

Beachten Sie das Connection NULL ist wenn die Datenbankverbindung nicht gefunden wurde.

Der Datenbankverbindungsname ist der Name der Datenbankverbindung wie er im AppBuilder festgelegt ist (was nicht zwingend gleich dem Namen der wirklichen Datenbank sein muss)

Es ist ratsam das Sie in Ihrem ClientPlugin einen Optionen Dialog bereitstellen wo sie den/die Datenbankverbidungsnamen für ihr Plugin einstellbar machen. Damit kann der Endwander dann die zu nutzende Verbindung(en) selbst einstellen.

Datenbank Type herausfinden

Connection cn = this.Project.GetDbConnection("DBNAME");

if (cn.DbType== DbType.Oracle)
{

}

Datenbank Struktur herausfinden

Connection cn = this.Project.GetDbConnection("DBNAME");

switch (cn.StorageSchemaType)
{
case StorageSchemaType.TB200X:
//Topobase/Map3D Datenstruktur
//System Tabellen beginnen mit "TB_"
break;
case StorageSchemaType.MapEdit:
//MapEdit
//System Tabellen beginnen mit "ME_"
break;
case StorageSchemaType.Unknown:
//Andere Datenstruktur
break;
}

Informationen zum Datenbank Schema einer Verbindung holen

Über die Klasse "DbSchemaDefinition" können Sie Informationen zu einer Datenbankverbindung abfragen. z.B. welche Tabellen, Relation, Label definition etc. es gibt.

Wenn Sie eine Connection haben bekommen sie das Schema so.

DbSchemaDefinition schema = connection.GetSchemaDefinition();
var tables = this.Schema.Tables;

An vielen Stellen wie dem DialogPlugin ist das aktuelle Schema das dem Dialog zugewiesen ist über "this.Schema" abgerfuen werden.

var alle Tabellen = this.Schema.Tables;
var table = this.Schema.Tables["BAUM"];
var spalten table.Columns;

Andere Wege das Schema zu holen:

DbSchemaDefinition schema = this.Repository.GetDbSchema("DBNAME")
Connection cn = this.Project.GetDbConnection("DBNAME");
DbSchemaDefinition schema = this.Repository.GetDbSchema(cn);
DbSchemaDefinition schema = this.Application.Repository.GetDbSchema("DBNAME");
DbSchemaDefinition schema = this.Project.Repository.GetDbSchema("DBNAME");