У меня есть stackedwidget
с несколькими страницами, на первой странице я проверяю соединение, на второй странице я проверяю доступность пользователя и так далее для остальной части страницы (у меня пять), в основном, другие страницы зависят на первой странице, если соединение не удалось или нет, моя проблема связана с другими страницами, даже если соединение установлено без каких-либо ошибок, вторая страница не может выполнить свой запрос, я получаю эту ошибку:
QSqlQuery::prepare: database not open
Мой слот:
void ConfSetup::setNextPage()
{
int currentIndex = ui->stackedWidget->currentIndex();
switch(currentIndex)
{
case 1:
ui->stackedWidget->setCurrentIndex(currentIndex + 1);
break;
case 2:
db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("mysql");
db.setHostName(ui->serverEdit->text());
db.setPort(ui->portEdit->text().toInt());
db.setUserName(ui->userEdit->text());
db.setPassword(ui->passwordEdit->text());
if(!db.open())
{
QMessageBox::critical(0, trUtf8("Fail to login"), trUtf8("Wrong user or password"));
}
else
ui->stackedWidget->setCurrentIndex(currentIndex + 1);
break;
case 3:
query.prepare("SELECT user FROM user WHERE user=:user");
query.bindValue(":user", ui->userDbEdit->text());
query.exec();
if(query.numRowsAffected() == 1)
QMessageBox::critical(0, trUtf8("User exist"), trUtf8("This user already token"));
else
ui->stackedWidget->setCurrentIndex(currentIndex + 1);
break;
case 4:
query.prepare("SELECT SCHEMA_NAME AS 'Database' FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=:database");
query.bindValue(":database", ui->dbNameEdit->text());
query.exec();
if(query.numRowsAffected() == 1)
QMessageBox::critical(0, trUtf8("Fail to create database"), trUtf8("This database already exist"));
else
ui->stackedWidget->setCurrentIndex(currentIndex + 1);
break;
}
}
Соединение:
connect(ui->nextButton0, SIGNAL(clicked()), this, SLOT(setNextPage()));
connect(ui->nextButton1, SIGNAL(clicked()), this, SLOT(setNextPage()));
//etc