Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Novicheck от Июнь 27, 2013, 16:10



Название: QSqlQuery
Отправлено: Novicheck от Июнь 27, 2013, 16:10
Доброго времени суток, уважаемые коллеги, подскажите пожалуйста как в целочисленную переменную поместить значение, получаемое в результате выполнения sql запроса.
Конкретно ситуация выглядит так: есть таблица в которую я добавляю строку, следующим образом
Код:
this->modelSpisoc.setQuery("INSERT INTO    people DEFAULT VALUES");
добавленная строка получает максимальное значение в поле id, нахожу я его запросом такого типа:
Код:
SELECT MAX( id ) FROM people 
и результат этого запроса (т.е. максимальное значение поля id) мне как то нужно присвоить переменной, для дальнейшего использования исключительно в коде проги.
Вот такая проблема


Название: Re: QSqlQuery
Отправлено: Alex Custov от Июнь 27, 2013, 16:15
ну а в чём дело? Берёшь QSqlQuery, читаешь его документацию, где достаточно примеров, пишешь код.


Название: Re: QSqlQuery
Отправлено: Novicheck от Июнь 27, 2013, 16:20
смотрел, и не раз, но примера с присваиванием переменной результата sql запроса не нашел.


Название: Re: QSqlQuery
Отправлено: Alex Custov от Июнь 27, 2013, 16:34
смотрел, и не раз, но примера с присваиванием переменной результата sql запроса не нашел.

Первый же пример из документации присваивает строковое значение полученное после SQL запроса:

Код
C++ (Qt)
QSqlQuery query("SELECT country FROM artist");
while (query.next()) {
  QString country = query.value(0).toString();
   doSomething(country);
}


Название: Re: QSqlQuery
Отправлено: Novicheck от Июнь 27, 2013, 16:45
спасибо, но это немного не то


Название: Re: QSqlQuery
Отправлено: Alex Custov от Июнь 27, 2013, 18:27
спасибо, но это немного не то

что именно не то?


Название: Re: QSqlQuery
Отправлено: dio от Июнь 27, 2013, 22:17
Код:
SELECT MAX( id ) FROM people 

Такой способ лучше не использовать для получения идентификатора вставленной записи. При многопользовательской работе может вернуть не тот ID. Посмотрите в сторону INSERT With Returning Clause (если СУБД поддерживает данный метод).

Код:
insert into ... returning into ...;

Да и еще можете обернуть insert в хранимую процедуру или функцию с возвращением id.






Название: Re: QSqlQuery
Отправлено: Novicheck от Июнь 28, 2013, 08:53
спасибо большое, я совершенно забыл о факторе многопользовательности