I have this SLOT:
Qt Code:
  1. void ConfSetup::setNextPage()
  2. {
  3. int currentIndex = ui->stackedWidget->currentIndex();
  4.  
  5. switch(currentIndex)
  6. {
  7. case 1:
  8. {
  9. ui->stackedWidget->setCurrentIndex(currentIndex + 1);
  10. }
  11. break;
  12.  
  13. case 2:
  14. {
  15. db = QSqlDatabase::addDatabase("QMYSQL");
  16. db.setDatabaseName("mysql");
  17. db.setHostName(ui->serverEdit->text());
  18. db.setPort(ui->portEdit->text().toInt());
  19. db.setUserName(ui->userEdit->text());
  20. db.setPassword(ui->passwordEdit->text());
  21.  
  22. if(!db.open())
  23. {
  24. QMessageBox::critical(0, trUtf8("Fail to login"), trUtf8("Wrong user or password"));
  25.  
  26. }
  27. else
  28. {
  29. ui->stackedWidget->setCurrentIndex(currentIndex + 1);
  30. }
  31. }
  32. break;
  33.  
  34. case 3:
  35. {
  36. QSqlQuery query;
  37. query.prepare("SELECT user FROM user WHERE user=:user");
  38. // query.prepare("SELECT user FROM user WHERE user='root'");
  39. query.bindValue(":user", ui->userDbEdit->text());
  40. query.exec();
  41.  
  42. if(query.numRowsAffected() > 0)
  43. QMessageBox::critical(0, trUtf8("User exist"), trUtf8("This user already token"));
  44.  
  45. else
  46. {
  47. qDebug("%s" , query.executedQuery().toStdString().c_str());
  48. qDebug() << db.databaseName();
  49. qDebug() << db.isOpen();
  50. qDebug() << query.lastError();
  51. qDebug("%s" , query.lastQuery().toStdString().c_str());
  52. qDebug("%d" , query.isActive());
  53. qDebug("%s" , db.driverName().toStdString().c_str());
  54. qDebug() << db.lastError();
  55. ui->stackedWidget->setCurrentIndex(currentIndex + 1);
  56. }
  57. }
  58. break;
  59.  
  60. case 4:
  61. {
  62. QSqlQuery query;
  63. query.prepare("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=:database");
  64. query.bindValue(":database", ui->dbNameEdit->text());
  65. query.exec();
  66.  
  67. if(query.numRowsAffected() == 1)
  68. QMessageBox::critical(0, trUtf8("Fail to create database"), trUtf8("This database already exist"));
  69.  
  70. else
  71. ui->stackedWidget->setCurrentIndex(currentIndex + 1);
  72. }
  73. break;
  74.  
  75. case 5:
  76. {
  77. QSqlQuery query;
  78. query.prepare("INSERT INTO Users(User, Password)" \
  79. "VALUES(:user, :password)");
  80. query.bindValue(":user", ui->userEdit->text());
  81. query.bindValue(":password", ui->passwordEdit->text());
  82. query.exec();
  83. ui->stackedWidget->setCurrentIndex(currentIndex + 1);
  84. }
  85. break;
  86.  
  87. }
  88. // ui->comboBox->addItem(ui->userDbEdit->text());
  89. // ui->lineEdit->setText(addSlashes(ui->slashesEdit->text()));
  90. }
To copy to clipboard, switch view to plain text mode 
And the connection like so:
Qt Code:
  1. connect(ui->nextButton0, SIGNAL(clicked()), this, SLOT(setNextPage()));
  2. connect(ui->nextButton1, SIGNAL(clicked()), this, SLOT(setNextPage()));
  3. //etc
To copy to clipboard, switch view to plain text mode 
The query is correct because I test it in phpMyAdmin, qDebug output show this:
Qt Code:
  1. SELECT user FROM user WHERE user=? //should be ... user = user, but formated like this because MySQL doesn't support native prepared statment
  2. "mysql"
  3. true
  4. QSqlError(-1, "", "")
  5. SELECT user FROM user WHERE user=:user
  6. 1
  7. QMYSQL
  8. QSqlError(-1, "", "")
To copy to clipboard, switch view to plain text mode 
Even if I execute this query:
Qt Code:
  1. query.prepare("SELECT user FROM user WHERE user='root'");
To copy to clipboard, switch view to plain text mode 
query still return -1.