SQL Abfrage und Vergleich mit dem "Namen"



  • Hallo,

    ich versuche gerade über eine QLineEdit Fenster den Nachnamen mit einer SQL Datenbank abzufragen.
    Dazu habe ich die Fragen :

    • Wie übernehme ich den Namen evtl so dass es eine Abfrage möglich ist ?
    • Ich müsste danach wahrscheinlich noch jeden Eintrag über eine Schleife abfragen damit ich nur den / die gültigen Nachnamen filtere und in der QTableView Ansicht zeige.

    Die Abschnitte der Codes habe ich unten beigefügt, wäre dankbar wenn ihr mir den Code zur Unterstützung beifügen könntet

    Vielen Dank

    void Suchen::on_SucheStart_clicked()
    {

    QString suchen1;
    QString sqlAbfrage = "anachname = '" + suchen1 + "'";
    
    suchen1 = ui->lineEditname->text();
    sqlAbfrage = suchen1;
    
    QMessageBox::information(this,"Anfrage",suchen1);
    
    //wenn eine Verbindung zu Datenbank besteht
    if (dbVerbunden == true)
    {
        if (suchen1 == "Mueller" )
    
        //sqlAbfrage == "Mueller"
        //suchen == ui->lineEditname->text()
    
        {
        //den Dialog anzeigen
        suchenliste *formListeSuchen = new suchenliste();
        formListeSuchen->show();
        }
    
        else
        //den Dialog anzeigen
        QMessageBox::information(this,"Nachname Suche","keine Ergebnisse");
    
    
    }
    

    Code about SQL

    suchenliste::suchenliste()
    {

    //QString sqlAbfrage;
    QString suchen;
    suchen = "Strobelt";
    
    //den Fenstertitel setzen
    setWindowTitle("Suchen Anzeige");
    //das Modell erstellen
    QSqlTableModel *modell = new QSqlTableModel(this);
    //die Tabelle setzen
    modell->setTable("adressen");
    //"anachname" == sqlAbfrage
    modell->setFilter("anachname = 'Mueller'"); //"anachname = 'Mueller'"
    
    //die Texte für die Spaltenköpfe setzen
    modell->setHeaderData(0, Qt::Horizontal, "ID");
    modell->setHeaderData(1, Qt::Horizontal, "Vorname");
    modell->setHeaderData(2, Qt::Horizontal, "Name");
    modell->setHeaderData(3, Qt::Horizontal, "Strasse");
    modell->setHeaderData(4, Qt::Horizontal, "PLZ");
    modell->setHeaderData(5, Qt::Horizontal, "Ort");
    modell->setHeaderData(6, Qt::Horizontal, "Telefon");
    
    //die Daten beschaffen
    modell->select();
    
    //die TableView erstellen
    QTableView *ansicht = new QTableView(this);
    //mit dem Modell verbinden
    ansicht->setModel(modell);
    //die Breite der Spalten an den Inhalt anpassen
    ansicht->resizeColumnsToContents();
    //die Größe setzen
    ansicht->resize(500,300);
    

    }

    reply


  • Moderators

    @cprogcoder Verstehe die Frage ehrlich gesagt nicht ganz.
    "Wie übernehme ich den Namen evtl so dass es eine Abfrage möglich ist ?" - ui->lineEditname->text(); macht doch genau das?

    suchenliste formListeSuchen(ui->lineEditname->text());
    formListeSuchen.show();
    
    suchenliste::suchenliste(const QString &nachname)
    {
        //den Fenstertitel setzen
        setWindowTitle("Suchen Anzeige");
        //das Modell erstellen
        QSqlTableModel *modell = new QSqlTableModel(this);
        //die Tabelle setzen
        modell->setTable("adressen");
        //"anachname" == sqlAbfrage
        modell->setFilter(QString("anachname = '%1'").arg(nachname));
    ...
    


  • Morgen,

    ich habe die Frage auch nicht wirklich verstanden, wollte jedoch mal mein Quellcode posten wie ich das mache.

    1. QLine Edit as String
    suchen1 = ui->lineEditname->text();
    

    Jetzt muss man noch einen Query erstellen.

    // Query String
    QString myquery = "SELECT * FROM users WHERE nachmame = '%" + suchen1 + "%' ";
    //Query erstellen
    QSqlQuery query(myquery);
    // Query abfragen
    QString result;
    while(query.next())
    {
        result = query.value(0).toString;
        qDebug() << "query result" << result;
        if(result == "Müller")
        {
          // Result in einer QStringListe oder Array oder was immer du hast speichern.
          YouQStringList.append(result);
        }
    }
    

    Jetzt kann mein sein Array oder QStringList usw. weiterverarbeiten.
    Ich hoffe ich konnte helfen.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.