PDA

Visualizza la versione completa : [Delphi] MySQL - User e Pssword


kate71
31-07-2003, 18:42
Ogni volta che avvio il programma
MySql apre una finestra di login
in cui mi richiede User e Password...:quipy:
c'è un modo per evitare di dover digitare
sempre il nome utente e la password?

Grazie
Kate71 :ciauz:

alka
31-07-2003, 19:40
Individua il componente che rappresenta la connessione al database (dipende dal tipo di motore che usi per l'accesso ai dati).

Se usi BDE, ad esempio, si tratta del componente TDatabase.

Ciascun componente di questo tipo possiede una proprietà LoginPrompt che puoi impostare a False per evitare che ti venga presentata ogni volta la maschera di login fornita da Delphi.

E' ovvio che poi dovrai assumerti la responsabilità di fornire in qualche modo, ad esempio tramite codice, lo "username" e la "password" corretti per la connessione.

Ciao! :ciauz:

kate71
01-08-2003, 11:31
Ho provato ad utilizzare il componente TDatabase.
Ho fatto doppio clic sul componente e ho aggiunto
USER NAME = root
PASSWORD = vuota - al momento non ne voglio alcuna.
Ho provato ad impostare la proprietà
LoginPrompt a false
ma al clic sul pulsante Insert il problema
si pone di nuovo e mi chiede ancora Login e Psw
per poi generare un errore:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDatabaseError with message
'Table1: Cannot perform this operation on a closed dataset'.
Process stopped. Use Step or Run to continue.
---------------------------

Questo perchè le tabelle risultano chiuse, suppongo.
Ma certo non posso impostare tutte le mie tabelle a true.
ho provato a scrivere ne codice
procedure TForm1.Database1AfterConnect(Sender: TObject);
begin
Table1.Active := True;
Table2.Active := True;
end;
ma chiaramente continua a chiedermi la password e il nome utente!

Cosa posso fare?

:dhò:

alka
01-08-2003, 11:58
Sei sicura di aver associato l'AliasName delle tabelle al nome del database visibile localmente nell'applicazione (contenuto nella proprietà DBName del TDatabase)?

kate71
01-08-2003, 12:01
stavo giusto rispondendoti di nuovo...
sei stato rapidissimo...

ho voluto testare di nuovo il componente TDatabase.
In effetti ... non avevo notato la proprietà
DatabaseName che io digito.... e che è poi la
proprietà che richiamo da DatabaseName di TTable e TQuery.
In questo modo...non mi richiede password e nome utente
ma mi genera lo stesso errore che ti ho scritto sopra!
Questo errore suppongo ci porti all'altra discussione su
Tabelle e Database. (http://forum.html.it/forum/showthread.php?s=&threadid=496723)

Kate71 :ciauz:

alka
01-08-2003, 12:03
Non portarmi da una discussione all'altra...non ce n'è bisogno. ;)

L'errore può essere dovuto a tante cose...devi dirmi su quale riga appare per poterti dare un aiuto.

Ciao! :ciauz:

kate71
01-08-2003, 12:30
direi che ora tutto funziona!
Non mi apre più la finestra User/Password!!!

credevo che il componente Database potesse evitarmi
di aprire e chiudere le tabelle ogni volta!
ma se così non è ...pazienza!!
Mettendo a true le tabelle nel momento
in cui servono... non da più nessun errore!!

Grazie mille!!
Kate71 :ciauz:

alka
01-08-2003, 14:57
Originariamente inviato da kate71
Mettendo a true le tabelle nel momento
in cui servono... non da più nessun errore!!

Ti spiego anche il perchè: associando tutte le tabelle il riferimento tramite alias ad un database esterno, ognuna cercava di crearsi e aprirsi, all'occorrenza, la propria connessione al database.

Usando il componente TDataBase, hai "centralizzato" la connessione che viene aperta solo per questo componente e viene resa pubblica attraverso un nome elencato anche negli elenchi degli alias disponibili per le tabelle.

Quando una tabella è associata ad un alias di database interno, tenterà di aprire quella e solo quella connessione, se non è già aperta. Così avrai un'unica connessione, aperta solo una volta con una sola richiesta di username e password che puoi sopprimere (come hai fatto tu) e disponibile per tutte le altre tabelle.

Risparmi risorse sul server e anche sul client, diminuendo il numero di connessioni aperte e velocizzando anche il processo di intercomunicazione tra il tuo programma e il server MySQL, evitando di aprire una nuova connessione ogni volta che attivi una tabella.

Ciao! :ciauz:

Loading