Napisalem sobie taki kod, i teraz chcialbym, aby dla podanego loginu i hasla, sprawdzalo mi, czy taki uzytkownik o takim hasle jest w bazie. Jak to zrobic? Mi nie dziala, ciagle zwraca true (bo query sie dobrze wykonalo) - ale jak zrobic tak, aby jesli "zwroci" pusty wynik; tzn nie znajdzie usera i hasla, bylo przykladow false? Wiecie, o co mi chodzi ;)
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QSqlTableModel>
#include <QSqlRelationalTableModel>
#include <QSqlRecord>
#include <QSqlError>
#include <QMessageBox>
#include <QDebug>
#include <QString>
#include<QApplication>
int main(int argc,char** argv){
QApplication app(argc,argv);
QSqlDatabase db;
//tworzenie bazy i otwieranie bazy
db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("localhost");
db.setDatabaseName("./users.gdb");
db.setUserName("users");
db.setPassword("users");
if (!db.open()) {
QMessageBox::critical(0, "Error","Error during opening the database");
exit(1);
}
//stworzenie tabeli - uzytkownicy z polami login i haslo
QSqlQueryModel modelCreate;
modelCreate.setQuery("select * from Users");
QSqlQuery query;
if(modelCreate.record().isEmpty())
{
query.exec("create table Users ("
"login varchar(40), password varchar(60))");
qDebug() << query.lastError().databaseText();
qDebug() << query.lastError().driverText();
//wstawianie do bazy
query.prepare("insert into Users values(:login,:password)");
query.bindValue(":login","admin");
query.bindValue(":password","admin");
query.exec();
qDebug() << query.lastError().databaseText();
qDebug() << query.lastError().driverText();
query.prepare("insert into Users values(:login,:password)");
query.bindValue(":login","student");
query.bindValue(":password","student");
query.exec();
qDebug() << query.lastError().databaseText();
qDebug() << query.lastError().driverText();
}
else
{
//wstawianie do bazy
query.prepare("insert into Users values(:login,:password)");
query.bindValue(":login","admin");
query.bindValue(":password","admin");
query.exec();
qDebug() << query.lastError().databaseText();
qDebug() << query.lastError().driverText();
query.prepare("insert into Users values(:login,:password)");
query.bindValue(":login","student");
query.bindValue(":password","student");
query.exec();
qDebug() << query.lastError().databaseText();
qDebug() << query.lastError().driverText();
}
QString login = "admin12121";
QString password = "admin";
bool is = query.exec("select login, password from Users where login like '"+login+"'"+" and password like '"+password+"'");
if(is)
qDebug () << login+" jest w bazie";
//powinno wypisac, ze nie ma, bo nie ma admina12121, tylko admin
if(db.isOpen()) db.close();
QSqlDatabase::removeDatabase("QSQLITE");
return app.exec();
}