• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

QT C++ - logowanie z bazy danych MySql

Cloud VPS
+1 głos
680 wizyt
pytanie zadane 15 kwietnia 2018 w C i C++ przez budyb Nowicjusz (150 p.)

Witam

Ostatnio chciałem zrobić program w którym byłaby możliwość logowania się a odpowiednie dane znajdowałyby się w bazie danych MySql. Znalazłem dwa poradniki na ten temat, niestety żadna metoda w moim wypadku nie działa. Po kliknięciu na przycisk "Zaloguj" kompletnie nic się nie dzieje. Dodam tylko, że gdy przeniosę bazę danych w inne miejsce niż zadeklarowane to program poprawnie wyświetla komunikaty o braku bazy. Używam Qt Creator 4.5.1 i piszę w C++.

#include "login.h"
#include "ui_login.h"
#include <cstdlib>
#include <QMessageBox>


login::login(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::login)
{
    ui->setupUi(this);

    Konta = QSqlDatabase::addDatabase("QSQLITE");
    Konta.setDatabaseName("C:/Users/marb1/Desktop/projekt/projekt/storage.sqlite");
    QFileInfo checkFile("C:/Users/marb1/Desktop/projekt/projekt/storage.sqlite");
    if(checkFile.isFile())
       {     if(!Konta.open())
        {
            QMessageBox::information(this,"Stan","Nie połączono z bazą");

        }

    }
}

login::~login()
{
    delete ui;
  //  Konta.close();
}



void login::on_exit_clicked()
{
    exit(0);
}

void login::on_login_2_clicked()
{   QString Username, Password;
    Username=ui->username->text();
    Password=ui->password->text();
    if(!Konta.isOpen()){QMessageBox::warning(this,"BŁąd","Brak połączenia z bazą!");}
    else {



    QSqlQuery qry;
    if(qry.exec("select * from users where Login='"+ Username +"' and Haslo='"+ Password +"'"))
    {int x=0;
        while(qry.next())
        {
            x++;
        }

        if(x==1)
        {
         ui->stan->setText("zalogowano");
        }
        if (x<1)
        {
            ui->stan->setText("Zle dane");
        }
        if(x>1)
        {
            ui->stan->setText("zleee");
        }
   }
    }



}

 

1 odpowiedź

0 głosów
odpowiedź 15 kwietnia 2018 przez jeremus Maniak (59,720 p.)

skoro nic się nie dzieje pewnie nie wchodzisz w if (qry.

w jakimś poradniku znalazłem takie przekazywanie parametrów do zapytania. Spróbuj.

QSqlQuery query;
query.prepare("SELECT name FROM people WHERE name = (:name)");
query.bindValue(":name", name);

if (query.exec())
{
   if (query.next())
   {
      // it exists
   }
}

http://katecpp.github.io/sqlite-with-qt/

Podobne pytania

+2 głosów
0 odpowiedzi 569 wizyt
–2 głosów
2 odpowiedzi 775 wizyt
pytanie zadane 27 marca 2020 w C i C++ przez Eriss69 Gaduła (4,470 p.)
0 głosów
2 odpowiedzi 765 wizyt
pytanie zadane 21 czerwca 2017 w C i C++ przez wanttobeanengineer Obywatel (1,120 p.)

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,908 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...