Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Connectionstring (https://www.delphipraxis.net/108021-sql-connectionstring.html)

onkelmehli 6. Feb 2008 14:34

Datenbank: SQL Server • Version: 2005 • Zugriff über: ADO

SQL Connectionstring
 
Hallo,

ich möchte in meiner Anwendung den Connectionstring zur SQL-Datenbank generieren. Das funktioniert auch wunderbar mit PromptDataSource.

Jetzt möchte ich aber nicht diesen Standard-Dialog aufrufen, sondern einen eigenen generieren. Mein Ziel ist, zu vermeiden, dass jemand Benutzer und Passwort etc. eingeben kann, da dieses vorgegeben wird. Es soll nur die Instanz und die Datenbank ausgewählt werden können.

Meine Frage ist, kann man so einen Dialog selbst erstellen, wenn ja, wie wäre ein Lösungsansatz ? Ich bin hier bei der function PromptDataSource aus der OleDB "hängen" geblieben....

Gruß

Matthias

shmia 6. Feb 2008 16:01

Re: SQL Connectionstring
 
Zitat:

Zitat von onkelmehli
Mein Ziel ist, zu vermeiden, dass jemand Benutzer und Passwort etc. eingeben kann, da dieses vorgegeben wird.

Kein Problem, das kann man zur Laufzeit in der ADOConnection im Event OnWillConnect besteuern:
Delphi-Quellcode:
procedure TDMcvs.ADOConnectionWillConnect(Connection: TADOConnection;
  var ConnectionString, UserID, Password: WideString;
  var ConnectOptions: TConnectOption; var EventStatus: TEventStatus);
begin
   UserID  := Connection.Properties.Item['User ID'].Value;
   Password := Connection.Properties.Item['Password'].Value;

   if UserID = 'Admin' then
   begin
      Password := 'JunkiONDRUGS';
   end
   else if UserID = 'User' then
   begin
      Password := 'grünbrotschimmel';
   end else if UserID ='' then
   begin
      UserID := 'guest';
      Password := 'ismirschlecht';
   end;
end;

Xong 6. Feb 2008 16:07

Re: SQL Connectionstring
 
Als Ergänzung: Da die Verbindung ja nicht alle fünf Minuten geändert wird, reicht es IMO, User ID und Password direkt nach dem Prompt einfach neu zu setzen. Dann kann der Nutzer zwar Benutzername und Passwort eingeben, es zeigt allerdings keine Wirkung.

Mein Tipp: Halte dich nicht an solchen Kleinigkeiten auf. Stell das Programm auf die Beine und kümmere dich um solche kleinen (ich meine damit wirklich nur die belanglosen) Fehler später.

LG,
Xong

onkelmehli 6. Feb 2008 16:10

Re: SQL Connectionstring
 
Hallo,

danke erst einmal für den Tip. Damit wäre Problem 1 gelöst. Aber nun möchte ich ja die Instanz und die Datenbank auswählen, das heißt, ich möchte z. B. in einer Combobox alle verfügbaren SQL-Instanzen des Servers angezeigt bekommen. Gibt es dafür eine Funktion ?

Gruß Matthias

onkelmehli 6. Feb 2008 16:16

Re: SQL Connectionstring
 
@Xong:
Zitat:

Mein Tipp: Halte dich nicht an solchen Kleinigkeiten auf. Stell das Programm auf die Beine und kümmere dich um solche kleinen (ich meine damit wirklich nur die belanglosen) Fehler später.
Ich bin nur der "kleine" Entwickler hierfür, alle Beschwerden bitte an meinen Vorgesetzten.... :lol:

shmia 6. Feb 2008 16:21

Re: SQL Connectionstring
 
Zitat:

Zitat von onkelmehli
Aber nun möchte ich ja die Instanz und die Datenbank auswählen, das heißt, ich möchte z. B. in einer Combobox alle verfügbaren SQL-Instanzen des Servers angezeigt bekommen.

Ich würde mit UDL-Dateien arbeiten; dafür sind sie ja da.
Dein connectionstring wird so erzeugt:
Delphi-Quellcode:
  ConnectionString := 'FILE NAME='+ ChangeFileExt(ParamString(0), '.UDL');
Neben deiner Anwendung liegt dann einfach eine UDL-Datei.
UDL-Dateien könnem ganz einfach erzeugt werden: leere TextDatei nach *.udl umbenennen und doppelklicken.
Damit brauchst du überhaupt nichts in deinem Programm, um die Connection zu ändern.

onkelmehli 6. Feb 2008 16:55

Re: SQL Connectionstring
 
Nur noch mal zum Verständnis, ich möchte, das ich die Instanz selbst auswählen kann, dass heißt, ich möchte (genau wie der Editor bei PromptDataSource) alle Instanzen die verfügbar sind, angezeigt bekommen.

Folgender Hintergrund:

Ich habe auf dem Rechner mehrere Instanzen des SQL-Servers, die allerdings alle (von der Struktur her) die gleiche Datenbank (auch der gleiche DB-Name) beinhalten. Nun möchte ich auswählen, zu welcher Datenbank (also zu welcher Instanz) ich mich verbinden möchte.

Gruß Matthias

shmia 7. Feb 2008 12:31

Re: SQL Connectionstring
 
Zitat:

Zitat von onkelmehli
Nur noch mal zum Verständnis, ich möchte, das ich die Instanz selbst auswählen kann, dass heißt, ich möchte (genau wie der Editor bei PromptDataSource) alle Instanzen die verfügbar sind, angezeigt bekommen.

Wenn du meinen Vorschlag annimmst, hast du folgende Vorteile:
* kein Programmieraufwand, Programm bleibt kleiner
* die Möglichkeit dich mit jeder Datenbank zu verbinden

Wenn dein Programm schon läuft und du dich mit einer anderen Datenbank verbinden möchtest, dann musst du anschliesend
dein Programm beenden und neu starten. (Da du ja schon mit der bisherigen DB verbunden bist)
Also warum nicht einfach eine UDL-Datei verwenden ?

Bernhard Geyer 7. Feb 2008 12:52

Re: SQL Connectionstring
 
Zur Info: Crosspost bei Entwickler-Forum


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz