Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / QSqlQuery - удалить запись / 14 сообщений из 14, страница 1 из 1
20.05.2014, 23:02
    #38647060
Obsess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
Хочу организовать фильтр к БД, но не через запросы sql, а через QSqlQuery. В связи с этим меня интересует, существует ли способ удаления записи из QSqlQuery?
Что-то типа такого:
Код: plaintext
1.
2.
3.
4.
5.
QSqlQuery query;
query.exec("select * from table1");
while(query.next()){
 query.record().clear();
}
...
Рейтинг: 0 / 0
20.05.2014, 23:53
    #38647096
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
Obsess,

Через DELETE запрос
...
Рейтинг: 0 / 0
21.05.2014, 11:42
    #38647370
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
Obsess,

Нет, нельзя.
QSql Query и есть запрос.
...
Рейтинг: 0 / 0
21.05.2014, 14:18
    #38647610
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
Obsess, если тебе лень изучать SQL или просто не знаешь синтаксис то посмотри
в сторону различных API для SQLBuilder-s. Возможно это облегчит твою жизнь.
...
Рейтинг: 0 / 0
22.05.2014, 12:25
    #38648777
Obsess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
NekZ Через DELETE запросMasterZiv прав, не получается.
maytonObsess, если тебе лень изучать SQL или просто не знаешь синтаксис то посмотри
в сторону различных API для SQLBuilder-s. Возможно это облегчит твою жизнь.Я знаю sql. Задача состоит именно в возможности реализовать фильтрацию на сороне клиента, а не составить запрос с условием.
В случае sql-запросов к БД фильтрация будет происходить на стороне сервера, а в случае фильтрации через QSqlQuery на стороне клиента. Я хочу, чтобы это происходило на стороне клиента.
...
Рейтинг: 0 / 0
22.05.2014, 12:31
    #38648797
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
ObsessЗадача состоит именно в возможности реализовать фильтрацию на сороне клиента, а не составить запрос с условием.

Только не перестарайся, а то придешь к тому что SQL-сервер превратится в тормозную эмуляцию файл-сервера.
...
Рейтинг: 0 / 0
22.05.2014, 12:49
    #38648842
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
On 22.05.2014 13:25, Obsess wrote:

> В случае sql-запросов к БД фильтрация будет происходить на стороне
> сервера, а в случае фильтрации через QSqlQuery на стороне клиента. Я
> хочу, чтобы это происходило на стороне клиента.

За каким ... ?
Обычно все брятся за то, чтобы ровно наоборот...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.05.2014, 14:15
    #38649057
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
ObsessЯ знаю sql. Задача состоит именно в возможности реализовать фильтрацию на сороне клиента, а не составить запрос с условием. В случае sql-запросов к БД фильтрация будет происходить на стороне сервера, а в случае фильтрации через QSqlQuery на стороне клиента. Я хочу, чтобы это происходило на стороне клиента.
Тоесть если тебе надо выбрать 1 строку из миллиарда ты в базе извлекаешь
миллиард строк, транслируешь их по сети к клиенту и потом показываешь
только 1 строчку?
...
Рейтинг: 0 / 0
23.05.2014, 00:36
    #38649678
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
Obsess,

Как это не получается? Выходит документация Qt врёт.
...
Рейтинг: 0 / 0
26.05.2014, 16:09
    #38652242
Obsess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
maytonТоесть если тебе надо выбрать 1 строку из миллиарда ты в базе извлекаешь
миллиард строк, транслируешь их по сети к клиенту и потом показываешь
только 1 строчку?Да, именно так! В моей задаче пользователь сначала смотрит на весь запрос, а потом из этого запроса по своим критериям постепенно и итерационно отфильтровывает то, что ему не нужно.
NekZКак это не получается? Выходит документация Qt врёт. Кроме удаления записи из запроса (не из БД) таким образом ничего другого не нашёл
Код: plaintext
1.
query.record().remove(0);

но это не работает. Значит документация врёт.
...
Рейтинг: 0 / 0
26.05.2014, 16:23
    #38652266
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
Obsess, возможно в твоей постановке есть здравый смысл. Но никогда не стоит
расчитывать на то что выборка целой таблицы из БД упадёл целиком на клиента
и он будет хорошо себя при этом чувствовать.

Я не програмиирую на Кют и я не знаю как устрое QSqlQuery. Но было-бы очень
даже bad-style копировать в оперативку кусок выборки. Хватит того что они в гридах лежат.
И того много.

Так что никто не делает брадт. Вообще-вообще никто.

Делай повторный запрос с другими параметрами.
...
Рейтинг: 0 / 0
26.05.2014, 17:01
    #38652323
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
> Я не програмиирую на Кют и я не знаю как устрое QSqlQuery.

Оно устроено тупо и просто: это запрос, текст которого ты задаёшь,
и потом этот запрос выполняется, получаются наборы данных.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.05.2014, 18:20
    #38652422
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QSqlQuery - удалить запись
ObsessmaytonТоесть если тебе надо выбрать 1 строку из миллиарда ты в базе извлекаешь
миллиард строк, транслируешь их по сети к клиенту и потом показываешь
только 1 строчку?Да, именно так! В моей задаче пользователь сначала смотрит на весь запрос, а потом из этого запроса по своим критериям постепенно и итерационно отфильтровывает то, что ему не нужно.Как пользователь видит данные? Через QTableView привязанного напрямую к QSqlQuery? Тогда пути два:
1) Замени QTableView на QTableWidget. После запроса, вручную копируешь данные из QSqlQuery в QTableWidget.
2) Замени модель у QTableView на какую-нибудь QStandardtItemModel и скопируй данные из QSqlQuery в нее.
В любом случае, удалять на клиенте строки из QSqlQuery нельзя, можно только выкачать все данные на клиента в локальный массив (собственный или предоставленный Qt) и удалять данные из него.

Но вообще, как уже говорили - так никто не делает. Пользователь конечно может поудалять кучку строк из своего локального хранилища данных. А дальше что? Первый де перезапрос данных эти строки вернет. Другие пользователи эти удаления не увидят.
Логичнее было-бы при удалении перемещать удаленные строки из основной таблицы в специальную таблицу "удаленных" или просто помечать эти строки как "удаленные" в основном хранилище и не показывать. А потом отсылать команду на удаление этих строк на сервер.
А если реального удаления вообще ненужно, то пусть пользователи используют фильтры - изменились фильтры произошел перезапуск QSqlQuery.

В общем, мы все тебе сильно советуем подумать и понять что-же тебе нужно в реальности. Удалять строки на клиенте в том виде как ты это желаешь это кривое решение непродуманной системы.
Пока твоя задача вызывает только недоумение.
...
Рейтинг: 0 / 0
29.05.2014, 13:56
    #38655780
QSqlQuery - удалить запись
White OwlObsessпропущено...
Да, именно так! В моей задаче пользователь сначала смотрит на весь запрос, а потом из этого запроса по своим критериям постепенно и итерационно отфильтровывает то, что ему не нужно.Как пользователь видит данные? Через QTableView привязанного напрямую к QSqlQuery? Тогда пути два:
1) Замени QTableView на QTableWidget. После запроса, вручную копируешь данные из QSqlQuery в QTableWidget.
2) Замени модель у QTableView на какую-нибудь QStandardtItemModel и скопируй данные из QSqlQuery в нее.
В любом случае, удалять на клиенте строки из QSqlQuery нельзя, можно только выкачать все данные на клиента в локальный массив (собственный или предоставленный Qt) и удалять данные из него.

ИМХО лучше уж QSortFilterProxyModel использовать, но миллиарды записей тащить на клиент и фильтровать тяжело будет, для этого и существуют СУБД.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / QSqlQuery - удалить запись / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]