Russian Qt Forum

Qt => Базы данных => Тема начата: NIKA от Сентябрь 06, 2012, 09:50



Название: QTableview
Отправлено: NIKA от Сентябрь 06, 2012, 09:50
Всем привет!В Qt новичок. Вот появился вопрос-как мне  по имеющемуся номеру участка num вытащить его id из базы?


Название: Re: QTableview
Отправлено: mutineer от Сентябрь 06, 2012, 09:57
Вероятно при помощи SQL-запроса и класса QSqlQuery


Название: Re: QTableview
Отправлено: NIKA от Сентябрь 06, 2012, 10:58
int id = "SELECT id FROM amnu WHERE num"=+num, где num получаю int num =ui->amnuPropertiesTableView->model()->data(indexcolumn).toInt(); Не хочет работать.Что-то с синтаксисом наверное. Посмотрите, пожалуйста!


Название: Re: QTableview
Отправлено: mutineer от Сентябрь 06, 2012, 10:59
ага, синтаксис совсем не похож на C++ - инту присваивать строку это как-то странно


Название: Re: QTableview
Отправлено: NIKA от Сентябрь 06, 2012, 11:01
int num = ui->amnuPropertiesTableView->model()->data(indexcolumn).toInt();
            QString string = QVariant(num).toString();
            qDebug()<<string;
            QString sqlFilter;
            sqlFilter = "SELECT id FROM amnu WHERE num ="+string;
qDebug возвращает "458"
"SELECT id FROM amnu WHERE num =458" сам номер а не его Id


Название: Re: QTableview
Отправлено: mutineer от Сентябрь 06, 2012, 11:03
А что еще ты ожидал видеть в qDebug(), если ты в него выводишь значение num? SQL-запрос составленный надо еще выполнить. Читай доку по QSqlQuery


Название: Re: QTableview
Отправлено: NIKA от Сентябрь 06, 2012, 11:06
Спасибо! ;D


Название: Re: QTableview
Отправлено: NIKA от Сентябрь 06, 2012, 11:21
Сделала так и все равно id  выводит 0, но qDebug()<<query.exec(sqlFilter) равно true.Посмотрите, пожалуйста в чем ошибка, все утро уже парюсь.

 QString string = QVariant(num).toString();
            QSqlQuery query;
            QString sqlFilter;
            sqlFilter = "SELECT id FROM amnu WHERE num ="+string;
            if (!query.exec(sqlFilter))
            {
               qDebug() << "Cannot open database:" << query.lastError();

            };
            qDebug()<<query.exec(sqlFilter);
            int id = QVariant(sqlFilter).toInt();
            qDebug()<<id;


Название: Re: QTableview
Отправлено: mutineer от Сентябрь 06, 2012, 11:24
QVariant(sqlFilter).toInt(); - вот это строчка берет строку "SELECT id FROM amnu WHERE num =" и переводит в int. глупость. читай доку

Ну и два раза выполнять запрос бессмысленно


Название: Re: QTableview
Отправлено: NIKA от Сентябрь 06, 2012, 11:34
Я так понимаю, что запрос выполнился и теперь мне это значение надо получить. Но как, что то я не нашла. Next что ли?Подскажи, пожалуйста. :)


Название: Re: QTableview
Отправлено: mutineer от Сентябрь 06, 2012, 11:35
В доке написано доходчиво и есть примеры


Название: Re: QTableview
Отправлено: NIKA от Сентябрь 06, 2012, 11:46
Все, получилось!  :D Спасибо большое за подсказки!!!