Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115

    [Borlnd C++ Builder 6] Ricerca di un record in database

    Salve a tutti, ho realizzato un Login che è collegato ad un database. Una volta che l'utente si è iscritto può effettuare un login per accedere all'applicazione, ciò che mi servirebbe realizzare è una funzione che cerca nel database se l'username o la password esiste. Sinceramente non ho ben capito come fare una cosa del genere senza GUI, perché non so come posso collegare la query al mio database, mentre, se uso la GUI c'è un attributo apposito. Comunque per quanto riguarda il metodo, io avrei pensato così:

    codice:
    String x, y;
    x = SELECT Username FROM Accessi;
    if (Username -> Text == x)
    {
        y = SELECT Password FROM Accessi;
        if (Password -> Text == y)
            cout <<"Login eseguito";
    } else 
        cout <<"Login errato";
    Username -> Text (e relativo Password -> Text) è la Stringa che leggo quando l'utente digita nel form.

    Ora sicuramente sintatticamente è tutto errato, ma la logica dovrebbe essere questa. Ciò che vi chiedo è come poterlo realizzare in maniera sintatticamente corretta, e inoltre per più di un record, in questo esempio io vado a selezionare solo il primo, ma se ne fossero di più? Il mio ciclo come conosce quanti record possiede il database ? E inoltre come incremento il contatore che mi porta al record successivo?

    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non uso C++ Builder ma presumo che se studi e provi un po' l'oggetto TADOQuery in

    http://docs.embarcadero.com/products...TADOQuery.html

    ci riesci da solo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115
    Grazie mille ore mi sei sempre d'aiuto!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115
    Sono riuscito a scrivere questo:

    codice:
    void __fastcall TForm1::LoginClick(TObject *Sender)
    {
        ADOTable1 -> First ();
        while (!ADOTable1 -> Eof)
        {
            if (ADOTable1 -> FieldByName ("Username") -> AsString == Username -> Text)
            {
                ShowMessage ("ciao");
            }
            else
                ADOTable1 -> Next ();
         }
         ShowMessage ("TEST");
    }
    Ma c'è un errore. Allora se inserisco un record che nel database è presente entra nell'if, il problema è che non ne esce più, in questo caso mi stampa in loop infinito 'ciao' in un poup. Nel caso in cui inserisco un nome che non esiste il programma va in tilt e si blocca. Insomma non riesco più ad uscire dal while, eppure credo che la funzione sia chiara! Aiutino?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115
    Dopo vario lavoro ci sono riuscito, ecco la versione funzionante:

    codice:
    void __fastcall TForm1::LoginClick(TObject *Sender)
    {
        ADOTable1 -> First ();
        bool trovato = false;
        while (!ADOTable1 -> Eof)
        {
            if (ADOTable1 -> FieldByName ("Username") -> AsString == Username -> Text)
            {
                 if (ADOTable1 -> FieldByName ("Password") -> AsString == Password -> Text)
                 {
                     Logged -> Show ();
                     trovato = true;
                     Label1 -> Visible = false;
                     Label2 -> Visible = false;
                 }
                 else
                     Label2 -> Visible = true;
            }
            ADOTable1 -> Next ();
        }
        if (trovato == false)
            Label1 -> Visible = true;
    }

  6. #6
    L'ggetto ADOTABLE, dovrebbe avere il metodo Locate, il quale fa il lavoro sporco al posto tuo .. credo sia molto più perfomante e riduci il tutto in 3 linee di codice

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.