PostgreSQL не удалось открыть другую базу данных

0

Ну, проблема в том, что когда я закрываю предыдущую базу данных и пытаюсь подключиться к новой, я получаю следующее:

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!");     
    }
}

Что здесь не так и как я правильно предполагаю закрыть старую базу данных и открыть новую?

  • 0
    Я не знаком с QT, но я предполагаю, что он готовит строку подключения из параметров, которые вы предоставляете через эти вызовы database.setXXX, и получающаяся строка имеет несбалансированные кавычки. Может ли один из вводимых вами данных содержать блуждающую кавычку?
  • 0
    @harmic о, может быть, ты прав, я проверю
Теги:
qt

1 ответ

0
Лучший ответ

Ну, проблема была здесь

 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()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню