Russian Qt Forum
Ноябрь 22, 2024, 23:13
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
Готовые модули для просмотра и редактирования БД
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Готовые модули для просмотра и редактирования БД (Прочитано 19680 раз)
deMax
Хакер
Offline
Сообщений: 600
Готовые модули для просмотра и редактирования БД
«
:
Сентябрь 22, 2017, 11:01 »
Сабж? Вроде и писать не сложно, но может готовое что есть?
есть БД, есть списки с подробным описанием таблиц и полей на русском, нужна форма которая сделает окно просмотра таблицы.
Аналогично нужна форма редактирования таблицы, с возможностью отмены, контролем что данные в таблице не изменились перед внесением изменений... (если данные изменились то сделать слияние как в git)
Записан
vic57
Чайник
Offline
Сообщений: 90
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #1 :
Сентябрь 22, 2017, 11:15 »
QSqlQueryModel, QSqlTableModel чем не подходят?
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #2 :
Сентябрь 27, 2017, 11:22 »
Для mssql изменения не сохраняются.
А вот такой вопрос: пользователь загрузил таблицу локально, отредактировал теперь он отсылает на сервер. Как проверить что на сервере таблица не изменилась?
Можно ли в запрос на изменения добавить запрос на проверку? Например 2 пользователя одновременно проверили что таблица не изменилась, первый залил изменения, а второй испортил данные(так как думал что заливает на неизмененную таблицу).
Записан
vic57
Чайник
Offline
Сообщений: 90
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #3 :
Сентябрь 27, 2017, 12:42 »
вставить можно все что угодно. я на изменение/удаление делал отдельный диалог с подтверждением действия. БД не будет думать за вас, бизнес-логику на клиенте самому надо делать.
например делать цепочку select/update - сначала видите то, что хотите изменить, потом меняеете
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #4 :
Сентябрь 27, 2017, 14:21 »
Меня вот какой вопрос смущает. Допустим в таблице есть 2 поля Scoda Touareg. Первый пользователь исправляет Scoda->Wolksvagen, а второй одновременно Touareg->Octavia, проверка у них произошла одновременно и получилось Wolksvagen Octavia или данные первого пользователя затрутся?
но тогда допустим есть еще поля в которые 2 пользователя вбивали технические характеристики и тогда теряются данные первого пользователя.
Можно ли считать таблицу, а записать только если таблица не изменилась с момента чтения?
Записан
vic57
Чайник
Offline
Сообщений: 90
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #5 :
Сентябрь 27, 2017, 19:24 »
Цитата: deMax от Сентябрь 27, 2017, 14:21
Меня вот какой вопрос смущает. Допустим в таблице есть 2 поля Scoda Touareg. Первый пользователь исправляет Scoda->Wolksvagen, а второй одновременно Touareg->Octavia, проверка у них произошла одновременно и получилось Wolksvagen Octavia или данные первого пользователя затрутся?
но тогда допустим есть еще поля в которые 2 пользователя вбивали технические характеристики и тогда теряются данные первого пользователя.
Можно ли считать таблицу, а записать только если таблица не изменилась с момента чтения?
ну это из серии - кто будет сторожить того кто будет сторожить
имхо я бы сделал поле user_id для каждого юзера, имеющего право на update например
http://webew.ru/articles/1383.webew
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #6 :
Сентябрь 28, 2017, 06:13 »
deMax, если редактируют одну таблицу или несколько таблиц связанных ключами, то БД не позволит одновременный доступ.
Т.е. один из пользователей получит сообщение об ошибке, либо после попытке сохранить данные увидит всё в исходном состоянии.
Записан
Юра.
deMax
Хакер
Offline
Сообщений: 600
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #7 :
Сентябрь 28, 2017, 08:11 »
Цитата: lit-uriy от Сентябрь 28, 2017, 06:13
deMax, если редактируют одну таблицу или несколько таблиц связанных ключами, то БД не позволит одновременный доступ.
Т.е. один из пользователей получит сообщение об ошибке, либо после попытке сохранить данные увидит всё в исходном состоянии.
А одновременно и не будет, считали что БД не изменилась, у второго лагнула сеть и он sql-запрос на изменения послал позже. Можно ли в одном запросе проверить что данные не изменились и только тогда вносить изменения? Потому что если запроса 2, между считал данные данные (локально проверил) и внес изменения кто то может эти данные изменить.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #8 :
Сентябрь 28, 2017, 08:13 »
Запрос QSqlDatabase при соединении и запросе останавливает gui. Его в поток выносить отдельный? Каждый запрос в отдельном потоке? Есть готовые решения?
Записан
vic57
Чайник
Offline
Сообщений: 90
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #9 :
Сентябрь 28, 2017, 09:04 »
http://doc.qt.io/Qt-5/examples-sql.html
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #10 :
Сентябрь 28, 2017, 09:24 »
Цитата: vic57 от Сентябрь 28, 2017, 09:04
http://doc.qt.io/Qt-5/examples-sql.html
И где там потоки(в папке примеров sql слово thread не найдено)? Виснущий GUI пока идет обращение к БД не очень актуально.
Записан
Bepec
Гость
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #11 :
Сентябрь 28, 2017, 10:53 »
В потоки шмалять. По другому никак не получается.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #12 :
Сентябрь 28, 2017, 11:14 »
И какой класс потока выбрать для mssql? QtConcurrent, QThread...
Для каждого запроса создавать поток или в один поток запросы кидать(через очередь)?
В принципе бд не нагруженная, главное чтоб гуи при подключении и запросах не вис. Как отменить db->open() в потоке?
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #13 :
Сентябрь 28, 2017, 13:47 »
>Для каждого запроса создавать поток
Надо не запрос, а соединение (QSqlDatabase) поместить в отдельный поток (moveToThread)
Записан
Юра.
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Готовые модули для просмотра и редактирования БД
«
Ответ #14 :
Сентябрь 28, 2017, 13:49 »
Цитата: lit-uriy от Сентябрь 28, 2017, 13:47
Надо не запрос, а соединение (QSqlDatabase) поместить в отдельный поток (moveToThread)
QSqlDatabase не является наследником QObject, поэтому у него нет метода moveToThread.
А так да, для каждой нитки нужно создавать отдельное подключение.
Записан
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...