Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Connection String Aufbau Dialog


Klabautermann - Sa 17.09.05 21:54
Titel: Connection String Aufbau Dialog
Hallo C#ler,

ich möchte gerne ein kleines C# Programm schreiben, welches mir erlaubt ein Query an eine beliebige ADO.NET Datenbank zu schicken. Zum verbindungsaufbau möchte ich aber nicht den Connection String eingeben sondern mir diesen lieber per Dialog zusammen klicken.

Das Problem ist, das ich keine Idee habe wo ich einen solchen Dialog im .NET Framework finde, kann mir da jemand auf die sprünge helfen?

Gruß
Klabautermann

PS: Nutze Sharp Develop, eine eventuell vorhandene VCL.NET Implementierung würde mir also nicht helfen.


Robert.Wachtel - Sa 17.09.05 22:05
Titel: Re: Connection String Aufbau Dialog
HOW TO: Build a Connection String Programmatically in ADO.NET by Using Visual C# .NET [http://support.microsoft.com/default.aspx?scid=kb;EN-US;310083]


Klabautermann - Sa 17.09.05 22:10

Cool dankeschön.


Delete - Sa 17.09.05 22:47
Titel: Re: Connection String Aufbau Dialog
user profile iconKlabautermann hat folgendes geschrieben:


Hallo C#ler,

ich möchte gerne ein kleines C# Programm schreiben, welches mir erlaubt ein Query an eine beliebige ADO.NET Datenbank zu schicken. Zum verbindungsaufbau möchte ich aber nicht den Connection String eingeben sondern mir diesen lieber per Dialog zusammen klicken.



Das geht ganz einfach. Erstell dir eine neue Textdatei und benenne die Endung nach .UDL um. Mit einem Doppelklick erscheint der Dialog wo du alles auswählen kannst. Nach beenden steht der Connection-String in der UDL-Datei. Dann brauchst du beim Start deines Programms den Typ aus der Datei auslesen, deine hoffentlich vorhandene Factory damit füttern und das richtige DataAcess-Object kommt dann zurück. So kannst du voll unabhängig von der DB den Code erstellen, also nix Designer, sondern alles von Hand ;-)

André


Klabautermann - So 18.09.05 22:44
Titel: Re: Connection String Aufbau Dialog
Hallo,
user profile iconMagicAndre1981 hat folgendes geschrieben:
Das geht ganz einfach. Erstell dir eine neue Textdatei und benenne die Endung nach .UDL um. {...}


ich hätte schon gerne ein Knöpfchen in meinem Programm um das zu erledigen. Natürlich könnte mein Programm eine solche Textdatei anlegen und diese dann ausführen, aber das ist so unelegant, weshalb mir ein direckter aufruf lieber währe.

user profile iconRobert.Wachtel hat folgendes geschrieben:
HOW TO: Build a Connection String Programmatically in ADO.NET by Using Visual C# .NET [http://support.microsoft.com/default.aspx?scid=kb;EN-US;310083]


Da habe ich mal im #Develop [http://www.icsharpcode.net/OpenSource/SD/] ausprobiert, es lässt sich aber leider nicht Compilieren.

Hier einmal der Beispiel Code über den wir reden ([url=http://support.microsoft.com/default.aspx?scid=kb;EN-US;310083]Quelle[/url]):


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
MSDASC.DataLinks mydlg = new MSDASC.DataLinks();
ADODB._Connection ADOcon;

//Cast the generic object that PromptNew returns to an ADODB._Connection.
ADOcon = (ADODB._Connection) mydlg.PromptNew();

ADOcon.Open("","","",0);

if (ADOcon.State == 1) {
    MessageBox.Show("Connection Opened");
    ADOcon.Close();
}
else {
    MessageBox.Show("Connection Failed");
}


Der Compiler meckert über das Hervorgehobene Objekt, weil es ihm unbekannt ist.

Das selbe Problem stellt sich auch, wenn ich dieses [http://www.codeproject.com/cs/database/DataLinks.asp] Projekt herunterlade und Importiere so, dass ich davon ausgehen kann, dass es kein Bug im Beispielcode ist.

Es stellt sich mir (der ich mit C# noch sehr unerfahren bin) also die Frage, wie mache ich es meinem Compiler bekannt?

Gruß
Klabautermann


Delete - Di 20.09.05 22:59
Titel: Re: Connection String Aufbau Dialog
user profile iconKlabautermann hat folgendes geschrieben:

user profile iconRobert.Wachtel hat folgendes geschrieben:
HOW TO: Build a Connection String Programmatically in ADO.NET by Using Visual C# .NET [http://support.microsoft.com/default.aspx?scid=kb;EN-US;310083]


Da habe ich mal im #Develop [http://www.icsharpcode.net/OpenSource/SD/] ausprobiert, es lässt sich aber leider nicht Compilieren.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
MSDASC.DataLinks mydlg = new MSDASC.DataLinks();
ADODB._Connection ADOcon;

//Cast the generic object that PromptNew returns to an ADODB._Connection.
ADOcon = (ADODB._Connection) mydlg.PromptNew();

ADOcon.Open("","","",0);

if (ADOcon.State == 1) {
    MessageBox.Show("Connection Opened");
    ADOcon.Close();
}
else {
    MessageBox.Show("Connection Failed");
}


Der Compiler meckert über das Hervorgehobene Objekt, weil es ihm unbekannt ist.


Du hast dir das Dokument auch durchgelesen? Da steht, dass du eine Referenz auf COM-Objekte einbinden musst.

On the COM tab, select the following references:
• Microsoft ActiveX Data Objects 2.7
• Microsoft OLEDB Service Component 1.0 Type Library

user profile iconKlabautermann hat folgendes geschrieben:

Das selbe Problem stellt sich auch, wenn ich dieses [http://www.codeproject.com/cs/database/DataLinks.asp] Projekt herunterlade und Importiere so, dass ich davon ausgehen kann, dass es kein Bug im Beispielcode ist.


Auf CodeProject steht sogar alle noch besser erklärt.

# Reference DataLinks in your project. DataLinks used to be MSDASC.dll, but has changed to OLEDB32.DLL (see KB). This file is located here: C:\Program Files\Common Files\System\Ole DB\OLEDB32.DLL

Wenn du das hinzufügst geht es ;-)

ABER: Warum gehts du den Weg? So nutzt du nur OLEDB-Provider anstatt die coolen managed-Provider für .NET . Und der Firebird hat keinen guten OLEDB-Provider, also fällt der raus, aber dafür einen coolen Managed-Provider.

André


Klabautermann - So 02.10.05 16:28
Titel: Re: Connection String Aufbau Dialog
Hallo,
user profile iconMagicAndre1981 hat folgendes geschrieben:
ABER: Warum gehts du den Weg? So nutzt du nur OLEDB-Provider anstatt die coolen managed-Provider für .NET . Und der Firebird hat keinen guten OLEDB-Provider, also fällt der raus, aber dafür einen coolen Managed-Provider.

das ganze .NET und C# Zeug ist für mich noch höchst experimentell. Was heißen soll, dass ich in diesem Bereich ein absoluter Anfänger bin und meine Möglichkeiten noch in keinester weise überblicke. Sind die "Managed-Provider" eine alternative (ersatz) für die ADO-Variante? Wo kann ich mich da einleisen? Dieses Projekt soll mich ins Feld der Datenbanken unter .NET einführen und daher hätte ich da ncihts gegen eine Erweiterung meines Horizontes ;) (auf wenn es mal länger dauern kann bis ich dazu komme, wie man hier an meiner Reaktionszeit sehen kann :oops:).

Gruß
Klabautermann


Robert_G - So 02.10.05 17:33
Titel: Re: Connection String Aufbau Dialog
Zitat:
das ganze .NET und C# Zeug ist für mich noch höchst experimentell. Was heißen soll, dass ich in diesem Bereich ein absoluter Anfänger bin und meine Möglichkeiten noch in keinester weise überblicke.

uff :shock:
Dann hätte ich mich in deinem anderen Thread wohl etwas zurückhalten sollen? :angel:
Zitat:
Sind die "Managed-Provider" eine alternative (ersatz) für die ADO-Variante?
Die ADO Alternative gibt es nur rein theorethisch. Ich wüsste nicht warum man sich diesn ADO-Krams noch antun sollte. ;)
Zitat:
Wo kann ich mich da einleisen? Dieses Projekt soll mich ins Feld der Datenbanken unter .NET einführen und daher hätte ich da ncihts gegen eine Erweiterung meines Horizontes ;)
Im MSDN sowie generell im Internet sollte es Tonnen von QuickStarts und Erklärungen zu ADO.Net geben.


Klabautermann - So 02.10.05 17:38
Titel: Re: Connection String Aufbau Dialog
Hi,
user profile iconRobert_G hat folgendes geschrieben:
Zitat:
Wo kann ich mich da einleisen? Dieses Projekt soll mich ins Feld der Datenbanken unter .NET einführen und daher hätte ich da ncihts gegen eine Erweiterung meines Horizontes ;)
Im MSDN sowie generell im Internet sollte es Tonnen von QuickStarts und Erklärungen zu ADO.Net geben.


Nur zum verständnis: Managed-Provider sind teil von ADO.NET und dass womit ich mich da herumquäle ist kassischen Win32 ADO gewarp für .NET?

Gruß
Klabautermann


Robert_G - So 02.10.05 17:39
Titel: Re: Connection String Aufbau Dialog
user profile iconKlabautermann hat folgendes geschrieben:
Nur zum verständnis: Managed-Provider sind teil von ADO.NET und dass womit ich mich da herumquäle ist kassischen Win32 ADO gewarp für .NET?
Genau! :)


Klabautermann - So 02.10.05 17:44
Titel: Re: Connection String Aufbau Dialog
user profile iconRobert_G hat folgendes geschrieben:
user profile iconKlabautermann hat folgendes geschrieben:
Nur zum verständnis: Managed-Provider sind teil von ADO.NET und dass womit ich mich da herumquäle ist kassischen Win32 ADO gewarp für .NET?
Genau! :)


Ahhh, Groschen ik hör dir klimpern.
Dann werde ich die Aufgabenstellung unter verwendung dieser neuen Erkenntnis noch mal überdenken.

Diese Frage hat sich damit für mich erledigt (das Interesse an einer Antwort für die andere bleibt dennoch bestehen ;)).

Danke euch allen für die Hilfe.

Klabautermann


Delete - So 02.10.05 18:03
Titel: Re: Connection String Aufbau Dialog
user profile iconKlabautermann hat folgendes geschrieben:
user profile iconRobert_G hat folgendes geschrieben:
user profile iconKlabautermann hat folgendes geschrieben:
Nur zum verständnis: Managed-Provider sind teil von ADO.NET und dass womit ich mich da herumquäle ist kassischen Win32 ADO gewarp für .NET?
Genau! :)


Ahhh, Groschen ik hör dir klimpern.
Dann werde ich die Aufgabenstellung unter verwendung dieser neuen Erkenntnis noch mal überdenken.


Hallo Klabautermann,

schau dir mal .NET 2.0 an. In einem Monat ist es ja soweit. Damit kriegst du deine Aufgabe leicht hin.

Mit
DataTable providers = System.Data.Common.DbProviderfactory.GetFactoryClasses();
erhälst du alle .NET Provider, die installiert sind.

Dann kannst du ganz leicht DB-unabhängig programmieren. Mit

C#-Quelltext
1:
2:
3:
4:
 DbProviderFactory prov = DbProviderFactories.GetFactor("System.Data.SqlClient");
DbConnection conn = provider.CreateConnection();
conn.ConnectionString = CONNECTIONSTRING;
conn.Open();
erhälst du eine Connection zu einem SQL-Server. Um eine Connection zu einem anderen Server aufzubauen brauchst du nur "System.Data.SqlClient" durch einen anderen Provider zu ersetzen :-)
Ist das nicht cool?

André


Robert_G - So 02.10.05 18:09

Ich glaube, da hat einer vergessen, dass der Inhalt dieser hässlich groß geschriebenen Variable irgendwoher kommen muss.
Es ging Klabautermann doch darum, dass der User die Db/Anmeldung selbst eingeben kann...


Delete - So 02.10.05 18:23
Titel: Re: Connection String Aufbau Dialog
Hmm Robbi, warum hab ich was falsch verstanden :gruebel:

user profile iconKlabautermann hat folgendes geschrieben:
Hallo C#ler,
ich möchte gerne ein kleines C# Programm schreiben, welches mir erlaubt ein Query an eine beliebige ADO.NET Datenbank zu schicken. Zum verbindungsaufbau möchte ich aber nicht den Connection String eingeben sondern mir diesen lieber per Dialog zusammen klicken.


Dann bastelt er sich einen Dialog selber. Die connectionStrings sind doch dokumentiert. Er kann doch Platzhalter einbauen, die er hann durch eingaben ersetzt -> fertig, oder nicht :gruebel:

André