Russian Qt Forum
Сентябрь 30, 2024, 12:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlQuery  (Прочитано 3654 раз)
Novicheck
Гость
« : Июнь 27, 2013, 16:10 »

Доброго времени суток, уважаемые коллеги, подскажите пожалуйста как в целочисленную переменную поместить значение, получаемое в результате выполнения sql запроса.
Конкретно ситуация выглядит так: есть таблица в которую я добавляю строку, следующим образом
Код:
this->modelSpisoc.setQuery("INSERT INTO    people DEFAULT VALUES");
добавленная строка получает максимальное значение в поле id, нахожу я его запросом такого типа:
Код:
SELECT MAX( id ) FROM people 
и результат этого запроса (т.е. максимальное значение поля id) мне как то нужно присвоить переменной, для дальнейшего использования исключительно в коде проги.
Вот такая проблема
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Июнь 27, 2013, 16:15 »

ну а в чём дело? Берёшь QSqlQuery, читаешь его документацию, где достаточно примеров, пишешь код.
Записан
Novicheck
Гость
« Ответ #2 : Июнь 27, 2013, 16:20 »

смотрел, и не раз, но примера с присваиванием переменной результата sql запроса не нашел.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Июнь 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);
}
« Последнее редактирование: Июнь 27, 2013, 16:37 от Alex Custov » Записан
Novicheck
Гость
« Ответ #4 : Июнь 27, 2013, 16:45 »

спасибо, но это немного не то
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Июнь 27, 2013, 18:27 »

спасибо, но это немного не то

что именно не то?
Записан
dio
Гость
« Ответ #6 : Июнь 27, 2013, 22:17 »

Код:
SELECT MAX( id ) FROM people 

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

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

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




« Последнее редактирование: Июнь 27, 2013, 22:18 от dio » Записан
Novicheck
Гость
« Ответ #7 : Июнь 28, 2013, 08:53 »

спасибо большое, я совершенно забыл о факторе многопользовательности
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.066 секунд. Запросов: 22.