Unsolved 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
-
@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.
- 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.