Created
March 8, 2012 10:12
-
-
Save sschober/2000120 to your computer and use it in GitHub Desktop.
[sweng2] db query problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void bodenseebike2::on_pbregistrieren_clicked() | |
{ | |
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //Aufbauen der Verbindung zur Datenbank | |
db.setDatabaseName("BTS.db"); | |
bool ok = db.open(); //wenn Öffnen fehlschlägt -> Rückgabewert false | |
if (!db.open()){ ui.leinfo->setText("Die Datenbank konnte nicht geöffnet werden");} //Bei Fehlschlagen von Öffnen | |
else { | |
Q_username = QString::fromStdString(ui.leusername->text().toStdString()); // Benutzername und Passwort von LineEdit lesen | |
Q_password = QString::fromStdString(ui.lepassword->text().toStdString()); | |
if (NULL==Q_username) {ui.leinfo->setText("Sie haben keinen Benutzer eingegeben!");} | |
else if (NULL==Q_password){ui.leinfo->setText("Sie haben kein Passwort eingegeben!");} | |
else if (NULL!=Q_username && NULL!=Q_password) | |
{ | |
QSqlQuery query; //Erzeugung eines Query-Objektes -> Interaktion mit Datenbank! | |
query.exec("SELECT name, passwort FROM User"); // liest Benutzernamen und Passwort aus der Datenbank | |
int check = 0; //hiermit kann unterschieden werden zwischen benutzer registriert, aber passwort falsch und noch nicht registriert | |
while (query.next()) // next(): true solange ein weiterer Eintrag in Tabelle | |
{ | |
QString username = query.value(0).toString(); | |
if(Q_username==username) //Nur wenn bereits der Benutzername übereinstimmt, wird das Passwort überprüft | |
{ | |
check = 1; // -> Benutzername in Datenbank enthalten -> bereits registriert | |
QString password = query.value(1).toString(); | |
if(Q_password==password) //Stimmt das Passwort, ist der Login erfolgreich und die Buttons werden freigeschalten | |
{ | |
ui.leinfo->setText("Sie sind bereits registriert wurden erfolgreich eingeloggt"); | |
ui.pbreservieren->setEnabled(true); | |
ui.pbstornieren->setEnabled(true); | |
ui.pblogout->setEnabled(true); | |
ui.pbloeschen->setEnabled(true); | |
ui.pbaktualisieren->setEnabled(true); | |
ui.pblogin->setEnabled(false); | |
ui.pbregistrieren->setEnabled(false); | |
show_marker(); //erst wenn User erfolgreich eingeloggt, werden die Marker gezeigt | |
} | |
else {ui.leinfo->setText("Sie sind bereits registriert, aber falsches Passwort");} | |
} | |
}//db.close(); | |
if (check == 0) | |
{ | |
ui.leinfo->setText("Sie wurden registriert"); | |
QSqlQuery query2; | |
query2.prepare("INSERT INTO User (id, name, passwort) VALUES (NULL, :name, :passwort);"); | |
query2.addBindValue(Q_username); | |
query2.addBindValue(Q_password); | |
query2.exec(); | |
ui.pbreservieren->setEnabled(true); | |
ui.pbstornieren->setEnabled(true); | |
ui.pblogout->setEnabled(true); | |
ui.pbloeschen->setEnabled(true); | |
ui.pbaktualisieren->setEnabled(true); | |
ui.pblogin->setEnabled(false); | |
ui.pbregistrieren->setEnabled(false); | |
show_marker(); //erst wenn User erfolgreich eingeloggt, werden die Marker gezeigt | |
db.close(); | |
} | |
} db.close(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Zeile
9f
:QLineEdit.text()
liefert bereits einenQString
(siehe QLineEdit-Dokumentation). Warum der Umweg über einenstd::string
?Zeile
17
: Rückgabewert vonquery.exec()
prüfen (siehe auch QSqlQuery-Dokumentation). Idiomatisch sollte eine Query folgendermassen ablaufen: