Здравствуйте, гость ( Вход | Регистрация )
PAFOS | Дата 27.4.2011, 8:24 |
Просто мне внчале надо получить данные о количестве строк для передачи в мою функцию, а лиш потом получать контейнер query... С точки зрения оптимальности я бы выполнил запрос данных, затем эти данные поместил в контейнер (например в QList) попутно обрабатывая данные. В итоге имеем 1. через QList::count() я могу получить кол-во записей, причем независимо от возможностей sql драйвера 2. данные уже преобразованы и готовы к дальнейшей обработке. Все лучше чем делать два sql запроса) |
|
silver47 | Дата 27.4.2011, 4:47 |
Если БД не SQLite то query.numRowsAffected(); | |
fortero | Дата 26.4.2011, 22:15 |
я думаю, при выборке из БД в какой-нибудь приватный член QSqlQuery пишется количество выбранных строк, после чего при запросе query.size() ты значение этого члена и извлекаешь, т.е. query.size() не считает строки Это верно, если драйвер (и СУБД) поддерживает данную фичу. Подскажите пожалуйста как оптимально экономично используя ресурсы, и логически правельно узнать количество строк в запросе? Обычно пишется SQL-запрос вида:
Если возвращаемое число каким-то образом используется для изменении данных в БД, то запрос на количество записей и изменение данных делается в рамках одной транзакции, чтобы данные были консистентными. Про это я знаю:
Но как извлечь данные из такого запроса не смейтесь я только начинаю в Qt работать и мне пока многое не понятно... И как сделать 2 запроса в рамках одной транзакции? Просто мне внчале надо получить данные о количестве строк для передачи в мою функцию, а лиш потом получать контейнер query... |
|
MoPDoBoPoT | Дата 26.4.2011, 22:07 |
я думаю, при выборке из БД в какой-нибудь приватный член QSqlQuery пишется количество выбранных строк, после чего при запросе query.size() ты значение этого члена и извлекаешь, т.е. query.size() не считает строки Это верно, если драйвер (и СУБД) поддерживает данную фичу. Подскажите пожалуйста как оптимально экономично используя ресурсы, и логически правельно узнать количество строк в запросе? Обычно пишется SQL-запрос вида:
Если возвращаемое число каким-то образом используется для изменении данных в БД, то запрос на количество записей и изменение данных делается в рамках одной транзакции, чтобы данные были консистентными. |
|
abc | Дата 26.4.2011, 21:34 |
А почему ты сомневаешься, что это оптимально? | |
fortero | Дата 26.4.2011, 21:13 |
не понимаю тебя, ты написал в теме посчитать количество строк, query.size() даёт результат, при чём здесь обход элементов? Я в посте написал не как вообще решить эту проблему а как максимально правельно с точки зрения нагрузки, что бы максимально разумно использовать ресурсы! |
|
abc | Дата 26.4.2011, 20:41 |
не понимаю тебя, ты написал в теме посчитать количество строк, query.size() даёт результат, при чём здесь обход элементов? | |
fortero | Дата 26.4.2011, 20:13 |
А это не оно?
Дело в том, что для того что бы вызвать выше указанную функцию итератору как я понимаю надо пролестать весь контейнер QSqlQuery, а это затраты на итерацию более проще можно получить сведенья? |
|
abc | Дата 26.4.2011, 19:52 |
int QSqlQuery::size () const | |
fortero | Дата 26.4.2011, 19:46 |
И с нова я... Подскажите пожалуйста как оптимально экономично используя ресурсы, и логически правельно узнать количество строк в запросе? У меня есть такой вариант, но что то мне подсказует что он не целисообразно использует ресурсы!
Буду очень признателен если кто-то прольёт свет, спасибо за внимание! |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 19.4.2024, 22:58 |