Название: QSqlQuery неожиданно падает
Отправлено: crazymonkey от Июнь 19, 2014, 21:00
Добрый день. Есть вот такой код: по нажатию на кнопку код падает. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
dbPostgres = &QSqlDatabase::addDatabase("QPSQL"); dbPostgres->setHostName("localhost"); dbPostgres->setDatabaseName("information_system"); dbPostgres->setUserName("postgres"); dbPostgres->setPassword("p@ssw0rd"); bool ok = dbPostgres->open();
ui->setupUi(this);
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(addNewUser())); setListOfTables(); setListOfUsers(); }
MainWindow::~MainWindow() { delete ui; }
void MainWindow::setListOfTables() { QSqlQuery *queryGetTables = new QSqlQuery(*dbPostgres); queryGetTables->exec("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"); while(queryGetTables->next()){ ui->textBrowser->append(queryGetTables->value(0).toString()); } }
void MainWindow::setListOfUsers() { QSqlQuery *queryGetUsers = new QSqlQuery(*dbPostgres); queryGetUsers->exec("SELECT usename FROM pg_catalog.pg_user"); auto k=0; while(queryGetUsers->next()){ ui->comboBox->insertItem(k,queryGetUsers->value(0).toString()); k++; } }
void MainWindow::addNewUser() { QSqlQuery *addNewUsers = new QSqlQuery(*dbPostgres); QString currentEditedUser = ui->lineEdit->text(); if (currentEditedUser == ""){ QMessageBox::information(this,"Information","Can't create user without name",QMessageBox::Ok); return; } databaseUsers->append(currentEditedUser); addNewUsers->exec("CREATEUSER " + currentEditedUser); }
Функции выборки пользователей и таблиц отрабатывают, а вот по нажатию на кнопу происходит падение.
Название: Re: QSqlQuery неожиданно падает
Отправлено: Old от Июнь 19, 2014, 21:09
На сколько я вижу, в конструкторе addDatabase возвращает временный объект соединения. Вы берете его адрес и используете. После завершения конструктора, временный объект разрушается и указатель начинает указывать на разрушенный объект. Посмотрите в документации и примерах, как нужно работать с соединениями QSqlDatabase.
Название: Re: QSqlQuery неожиданно падает
Отправлено: crazymonkey от Июнь 19, 2014, 21:13
Да уж. Прошляпил такую простую штуку :)
|