Come costruire dinamicamente la stringa di connessione al database

click fraud protection

Una volta terminato il tuo Soluzione di database Delphi, il passaggio finale consiste nel distribuirlo correttamente nel computer dell'utente.

ConnectionString al volo

Se si utilizzavano componenti dbGo (ADO), ilConnectionString proprietà del TADOConnection specifica le informazioni di connessione per l'archivio dati.

Ovviamente, quando si creano applicazioni di database che devono essere eseguite su vari computer, la connessione all'origine dati non deve essere codificata nell'eseguibile. In altre parole, il database può trovarsi ovunque sul computer dell'utente (o su qualche altro computer in una rete) - la stringa di connessione utilizzata nell'oggetto TADOConnection deve essere creata in tempo di esecuzione. Uno dei posti suggeriti per memorizzare i parametri della stringa di connessione è il Registro di Windows (o, potresti decidere di usare il "semplice" File INI).

In generale, per creare la stringa di connessione in fase di esecuzione è necessario
a) inserire il percorso completo del database nel registro; e

instagram viewer

b) ogni volta che si avvia l'applicazione, leggere le informazioni dal Registro di sistema, "creare" ConnectionString e "aprire" ADOConnection.

Banca dati... Collegare!

Per aiutarti a comprendere il processo, abbiamo creato un'applicazione "scheletro" di esempio composta da un modulo (modulo principale dell'applicazione) e un modulo dati. I moduli dati di Delphi offrono un comodo strumento organizzativo utilizzato per isolare le parti dell'applicazione che gestiscono la connettività del database e le regole aziendali.

Il OnCreate L'evento del modulo dati è dove si inserisce il codice per costruire dinamicamente ConnectionString e connettersi al database.

procedura TDM.DataModuleCreate (Mittente: TObject); inizioSe DBConnect poi
ShowMessage ('Connected to Database!')
altro
ShowMessage ('NON connesso al database!'); fine;

Nota: Il nome del modulo dati è "DM". Il nome del componente TADOConnection è "AdoConn".

Il DBConnect La funzione fa il vero lavoro di connessione al database, ecco il codice:

funczione TDM.DBConnect: booleano; var
conStr: string; ServerName, DBName: string; inizioServerName: = ReadRegistry ('DataSource'); DBName: = ReadRegistry ('DataCatalog'); conStr: = 'Provider = sqloledb;' + 'Origine dati =' + ServerName + ';' + 'Initial Catalog =' + DBName + ';' + 'ID utente = myUser; Password = myPasword '; Risultato: = false; AdoConn. Vicino; AdoConn. ConnectionString: = conStr; AdoConn. LoginPrompt: = False;Se (NON AdoConn. Collegato) poiprovare
AdoConn. Aperto; Risultato: = true; trannesu E: eccezione fareinizioMessageDlg ('Si è verificato un errore durante la connessione. il database. Errore: '+ # 13 # 10 + e. Message, mtError, [mbOk], 0);SeNON TDatabasePromptForm. Esegui (ServerName, DBName)
poi
Risultato: = falso. altroinizio
WriteRegistry ('DataSource', ServerName); WriteRegistry ('DataCatalog', DBName); // richiama questa funzione
Risultato: = DBConnect; fine; fine; fine; fine; //DBConnect

La funzione DBConnect si collega al database MS SQL Server: ConnectionString viene creato utilizzando il locale connStr variabile.

Il nome del server database è memorizzato in Nome del server variabile, il nome del database è contenuto nel file DBName variabile. La funzione inizia leggendo quei due valori dal registro (usando la funzione personalizzata ReadRegistry () procedura). Una volta assemblato ConnectionString, chiamiamo semplicemente allora AdoConn. Aperto metodo. Se questa chiamata restituisce "true", ci siamo connessi correttamente al database.

Nota: poiché stiamo trasmettendo esplicitamente le informazioni di accesso tramite ConnectionString, il modulo Since è data creato prima del modulo principale, è possibile chiamare in modo sicuro i metodi dal modulo dati in OnCreate di MainForm evento.LoginPrompt La proprietà è impostata su false per impedire una finestra di dialogo di accesso non necessaria.

Il "divertimento" inizia se si verifica un'eccezione. Sebbene ci possano essere molti motivi per cui il metodo Open ha esito negativo, supponiamo che il nome del server o il nome del database non siano corretti.
In tal caso, daremo la possibilità all'utente di specificare i parametri corretti visualizzando un modulo di dialogo personalizzato.
L'applicazione di esempio contiene anche un modulo aggiuntivo (DatabasePromptForm) che consente all'utente di specificare il server e il nome del database per il componente Connessione. Questo semplice modulo fornisce solo due caselle di modifica, se si desidera fornire un'interfaccia più intuitiva, è possibile aggiungere due ComboBox e riempire quelli elencando i server SQL disponibili e recuperando i database su un SQL Server.

Il modulo DatabasePrompt fornisce una personalizzazione metodo di classe denominato Esegui che accetta due parametri variabili (var): ServerName e DBName.

Con i "nuovi" dati forniti da un utente (nome del server e del database), chiamiamo semplicemente nuovamente la funzione DBConnect () (ricorsivamente). Naturalmente, le informazioni vengono prima memorizzate nel registro (utilizzando un altro metodo personalizzato: WriteRegistry).

Assicurati che DataModule sia il primo "modulo" creato!

Se provi a creare questo semplice progetto da solo, potresti riscontrare eccezioni alla violazione di accesso quando esegui l'applicazione.
Per impostazione predefinita, il primo modulo aggiunto all'applicazione diventa MainForm (il primo creato). Quando si aggiunge un modulo dati all'applicazione, il modulo dati viene aggiunto all'elenco dei "moduli di creazione automatica" come modulo creato dopo il modulo principale.
Ora, se provi a chiamare una qualsiasi delle proprietà o dei metodi del modulo dati nell'evento OnCreate di MainForm, otterrai un'eccezione di violazione di accesso, poiché il modulo dati non è ancora stato creato.
Per risolvere questo problema, è necessario modificare manualmente l'ordine creato del modulo dati e impostarlo su il primo modulo che viene creato dall'applicazione (utilizzando la finestra di dialogo Proprietà progetto o modificando il Progetti il ​​file sorgente).

Poiché il modulo dati viene creato prima del modulo principale, è possibile chiamare in modo sicuro i metodi dal modulo dati nell'evento OnCreate di MainForm.

instagram story viewer