Ну, проблема в том, что когда я закрываю предыдущую базу данных и пытаюсь подключиться к новой, я получаю следующее:
Connection failed!
unterminated quoted string in connection info string
QPSQL:Unable to connect
Здесь полное описание того, что я делаю:
Сначала я вхожу в систему с любым доступным логином и подключаюсь к базе данных по умолчанию "posgtres". Затем я выполняю select * from pg_database;
запроса select * from pg_database;
для получения списка всех доступных баз данных. После этого я закрываю базу данных.
void FdbToPg::connectToDatabase(){
database.setHostName(ui.lineIP->text());
database.setDatabaseName("postgres");
database.setUserName(ui.lineLogin->text());
database.setPassword(ui.linePassword->text());
database.setPort(ui.linePort->text().toInt());
QSqlQuery query;
if(database.open()){
QString dbOutput = "select * from pg_database;";
query.exec(dbOutput);
while(query.next()){
ui.comboBox->addItem(query.value(0).toString(),QVariant::Char);
}
database.close();
}else{
QMessageBox::information(this, "Error", "Cant' connect ot the database");
}
}
Затем, когда вы выбрали доступные базы данных, я пытаюсь подключиться к нему. И там я получаю это сообщение об ошибке
void FdbToPg::on_selectButton_clicked(){
database.setDatabaseName(ui.comboBox->itemData(ui.comboBox->currentIndex()).toString());
database.setHostName(ui.lineIP->text());
database.setUserName(ui.lineLogin->text());
database.setPassword(ui.linePassword->text());
database.setPort(ui.linePort->text().toInt());
bool ok = database.open();
if(ok != true){
QMessageBox::information(this, "Connection", "Connection failed! \n" + database.lastError().text());
} else {
QMessageBox::information(this, "Connection", "Connection worked!");
}
}
Что здесь не так и как я правильно предполагаю закрыть старую базу данных и открыть новую?
Ну, проблема была здесь
database.setDatabaseName(ui.comboBox->itemData(ui.comboBox->currentIndex()).toString());
ui.comboBox->itemData(ui.comboBox->currentIndex()).toString()
возвратили пустую строку. Я изменил его на database.setDatabaseName(ui.comboBox->currentIndex());
и теперь все в порядке.
Но я до сих пор не понимаю, что случилось с ui.comboBox->itemData(ui.comboBox->currentIndex()).toString()
Команда ui.comboBox->itemData(ui.comboBox->currentIndex()).toString()