Russian Qt Forum
Ноябрь 26, 2024, 02:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Клиент-серверное приложение с БД
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Клиент-серверное приложение с БД (Прочитано 5003 раз)
qwyllum
Гость
Клиент-серверное приложение с БД
«
:
Апрель 09, 2013, 11:15 »
С-но вопрос. Научился делать десктопное приложение, которое читает данные с SQLite и выводит их в таблицу TableView. Теперь передо мной следующая задача - сделать приложение клиент-серверным. Отсюда вопросы:
1. Как передавать данные клиенту, которые сервер читает с БД
2. Как их выводить в таблицу - model связана с БД. В случае клиент-серверного приложения, model не может напрямую конектится с БД, данные должен передавать сервер. Если честно, не знаю, как это реализовать. Буду признателен, если кто поможет.
Записан
alex312
Хакер
Offline
Сообщений: 606
Re: Клиент-серверное приложение с БД
«
Ответ #1 :
Апрель 09, 2013, 11:18 »
C-но ответ. Научи свое приложение подключатся в mysql - и фсе . Это уже будет клиент-серверное приложение.
Записан
qwyllum
Гость
Re: Клиент-серверное приложение с БД
«
Ответ #2 :
Апрель 09, 2013, 12:27 »
Цитата: alex312 от Апрель 09, 2013, 11:18
C-но ответ. Научи свое приложение подключатся в mysql - и фсе . Это уже будет клиент-серверное приложение.
так мое приложение умеет подключаться к SQLite) просто БД с сервером может быть на одном компьютере, а клиент - на другом. И клиентов может быть несколько
Записан
Bepec
Гость
Re: Клиент-серверное приложение с БД
«
Ответ #3 :
Апрель 09, 2013, 12:30 »
Ну таки разрабатывайте протокол, или же переходите на серверную БД.
Записан
qwyllum
Гость
Re: Клиент-серверное приложение с БД
«
Ответ #4 :
Апрель 09, 2013, 14:50 »
Цитата: Bepec от Апрель 09, 2013, 12:30
Ну таки разрабатывайте протокол, или же переходите на серверную БД.
Ну, допустим, я разработал простейший протокол, который будет передавать данные записи от сервера к клиенту. Теперь вопрос - QTableView работает с моделью. Модель и база на сервере, QTableView на клиенте. Следовательно, тут я вижу такие варианты:
1. Копировать переменную класса QSqlQueryModel и пересылать ее по сети полностью. На клиенте из ее копии формировать таблицу, которую и требуется отобразить.
2. Передавать список параметров, которые надо либо выводить на клиенте, либо записывать в БД на сервере. С записью вроде понятно. А с выводом... ну, допустим, я получил 4 строковых параметра, как мне запихнуть их в QTableView?
Записан
Bepec
Гость
Re: Клиент-серверное приложение с БД
«
Ответ #5 :
Апрель 09, 2013, 14:59 »
Я думаю вам не так надо думать
Копирование QSqlQueryModel дело неблагодарное. Там жеж умные указатели и прочая.
Я вижу пару выходов:
1) работать с самопальной моделькой, которая будет запрашивать данные с сервера (т.е. видно 30 строк - она 30 запросит.) Нужно больше? запросит следующие 30 али ещё сколько.
Т.е. посылаем запрос на сервер, получаем готовую строку.
Редактируем? уходит запрос.
+: возможное быстродействие
-: самому писать модельку, эт дело тоже неблагодарное
2) развернуть серверную БД и тупо использовать стандартные модели.
+: без особых понтов получаем полный функционал.
-: возможен взлом и прочая порча гадости
Пусть и чисто теоритически
-: вам надо освоить серверную бд
Записан
KrupaKarlo
Гость
Re: Клиент-серверное приложение с БД
«
Ответ #6 :
Апрель 09, 2013, 19:51 »
Цитата: Bepec от Апрель 09, 2013, 14:59
Я думаю вам не так надо думать
Копирование QSqlQueryModel дело неблагодарное. Там жеж умные указатели и прочая.
Я вижу пару выходов:
1) работать с самопальной моделькой, которая будет запрашивать данные с сервера (т.е. видно 30 строк - она 30 запросит.) Нужно больше? запросит следующие 30 али ещё сколько.
Т.е. посылаем запрос на сервер, получаем готовую строку.
Редактируем? уходит запрос.
+: возможное быстродействие
-: самому писать модельку, эт дело тоже неблагодарное
2) развернуть серверную БД и тупо использовать стандартные модели.
+: без особых понтов получаем полный функционал.
-: возможен взлом и прочая порча гадости
Пусть и чисто теоритически
-: вам надо освоить серверную бд
это я б сказал клиент сервер на уровне детсада. я хз как такое можно предлагать. Вообще модельки кутешные для БД, которые работют с ней в гуй потоке это мрак полный.
тут на самом деле куча вопросов, к примеру.
1. Делать ли на сервере
отдельный тред на каждое подключение
пул потоков
просто фигачить в одном треде
2. Выбор протокола или городить свой велосипед или пользоваться готовыми к примеру google protobuf
Но блин только в лабораторной работе в университете можно делать запросы к БД из гуй потока
«
Последнее редактирование: Апрель 09, 2013, 19:53 от KrupaKarlo
»
Записан
Bepec
Гость
Re: Клиент-серверное приложение с БД
«
Ответ #7 :
Апрель 09, 2013, 20:30 »
Уровень детсада = уровню вашего понимания языка. У кого-то это детсад на полгорода, у другого на 1 место и без нянечки.
Не надо такой категоричности. Запрос к БД занимает довольно мало времени в локали. Так что для локали это зе бест и никаких потоков ненадо.
К тому же рассматривается пока концепция. А куда чего совать - это дальше по разработке.
PS и большая просьба, не цитируйте большие сообщения. Это лишь загрязняет тему. А я итак пойму о чём вы говорили
PPS чес-слово, а где вы в моём сообщении увидели что запросы выполняются в гуи потоке?
update: да, забыл добавить, запрос одной строки к локальной базе занимает около 0,002 мс
Записан
KrupaKarlo
Гость
Re: Клиент-серверное приложение с БД
«
Ответ #8 :
Апрель 09, 2013, 20:44 »
больше не буду цитировать. И да мой уровень понимания ниже среднего увы
«
Последнее редактирование: Апрель 09, 2013, 20:50 от KrupaKarlo
»
Записан
Странник
Гость
Re: Клиент-серверное приложение с БД
«
Ответ #9 :
Апрель 09, 2013, 22:39 »
зачем городить велосипед и использовать SQLite в сетевом многопользовательском приложении? Оо
смените СУБД на MySQL, PostgresSQL или Firebird. они бесплатны и поддерживаются Qt, так что всей работы - перенести базу, приведя в соответствие типы данных.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...