Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034

Клиент-серверная база данных: где разместить серверную часть?

10.03.2014, 03:53. Показов 3990. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть две програмы, серверная и клиентская части БД в клиентской в настройки вбиваю 127.0.0.1, заполняю поля, жму отправить и на серверной части программы добавляются строки!

У меня вопрос простой - можно ли поместить куда нибудь на сервер серверную часть программы, так чтобы она работала.
Если можно то на какой сервер, или на какой компьютер? Вобщем обьясните подробнее.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2014, 03:53
Ответы с готовыми решениями:

Клиент-серверная база(подключение через хостинг)
Здравствуйте. Я хотел создать клиент-серверная база. Создал базу на Phpmyadmin. Теперь хочется подключиться к базу через хостинга. Но не...

Как внедрить в проект, где хранить и в качестве чего серверную часть?
Здравствуйте, Размышляю на тему где и как хранить nodejs backend. Т.е у меня есть серверная часть и два приложения web site и ionic...

WebForm передача данных на серверную часть используя javascript
Добрый день! Имеется ли возможность в WebForm передать данные на серверную часть используя элементы javascript? Необходимость возникла...

36
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
10.03.2014, 12:43
Серверную часть ты можешь поместить куда угодно, на любой компьютер. Главное чтобы клиентская часть "видела" серверную (через локальную сеть или интернет). В клиентской части вместо 127.0.0.1 вводишь IP адрес машины куда поставил серверную часть, которая должна "слушать" любые входящие подключения, а не только с адреса 127.0.0.1
А вот сможет ли клиент приконнектиться к серверу на конкретной машине - тут уже вопросы про доступность портов, файрволы и прочее, что мало относится непосредственно к программированию клиент-серверных программ
1
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
10.03.2014, 15:03  [ТС]
Цитата Сообщение от wingblack Посмотреть сообщение
А вот сможет ли клиент приконнектиться к серверу на конкретной машине
Да я вот тоже о этом подумал, ладно на одном компьютере при тесте все нормально, но вот как его коннектить где нибудь в интернете на сервере... Это уже сложноватый вопрос.
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
10.03.2014, 19:12
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Да я вот тоже о этом подумал, ладно на одном компьютере при тесте все нормально, но вот как его коннектить где нибудь в интернете на сервере... Это уже сложноватый вопрос.
Вопрос о доступности программы-сервера встает каждый раз когда кто-то хочет хостить любую программу с функциями сервера - FTP, почта, чат, игровые сервера, и прочее. Главное чтобы машина с серверной частью была видна в интернете. В "домашних" условиях этот фактор обычно определяет имеет ли машина белый IP и не заблокирован ли порт сервера для входящих соединений.
Есть, конечно, методы для соединения при разных видах "прямой недоступности", но я о них знаю мало и сейчас даже правильный поисковой вопрос не могу придумать.

На VPS обычно проблем нет, разве что открыть порт в настройках файрвола возможно нужно будет
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
27.08.2014, 16:35
Добрый день! Подскажите чайнику где бы взять работающий пример БД клиент сервер (мааааленький на 1 табличку хотя бы чтобы просто въехать), и еще бы чтоб база mdb была. В инете инфы совсем мало(((, одни чаты, а мне бы "табличное" приложение забацать. Работаю сейчас в акцесе, вот думаю клиентскую часть на Делфу поменять.

Вот нашел тут один http://www.delphikingdom.com/a... alogid=773
, но клиент у меня не может данные менять. Точнее на экране все меняется, а в mdb на сервере не меняется. Что там можно сделать? может свойство какое поменять?

Еще возможно ли в том примере как-то SocketConnection на Indy клиент и сервер заменить (говорят покруче оно))), и как их подсоединить правильно.
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
28.08.2014, 02:18
Цитата Сообщение от kavasaka Посмотреть сообщение
Работаю сейчас в акцесе, вот думаю клиентскую часть на Делфу поменять.
Только клиентскую? Я бы посоветовал в первую очередь заменить серверную часть и уйти от акцесса на реально клиент-серверную СУБД.
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
28.08.2014, 17:05
Цитата Сообщение от northener Посмотреть сообщение
Только клиентскую? Я бы посоветовал в первую очередь заменить серверную часть и уйти от акцесса на реально клиент-серверную СУБД.
1. А чем та СУБД что в примере не реальная? Как я понимаю это на 50% готовая задача (если не на все 80))), осталось только всякие дельфийские заморочки забороть (вот какого Х оно не редактируется по умолчанию???, и т. п.).

2. База mdb уже есть и влом ее переливать. mdb к тому же прозрачнее что ли, т.е. если прога чего-то там нахомутает всегда можно зайти аксом в таблицы и ручками перебить все или увидеть в чем фигня.

3. И какая разница в чем данные хранить на сервере, за транспорт и связь же будут спец компоненты работать типа Сокетов тех же, значит это уже клиент-сервер получается (ну или типа оно))

4. Если переливать базу. Я так понимаю "реально СУБД" значит в MS(или му) SQL, Firebird, oracle и прочие. Так я же чайник в этом если не хуже))). И тот отсюда же вопрос - инфы (понятной особенно) ноль, где скачать готовый пример в 1 таблиц?.... И главное заморочек (типо того Х) будет в 10 раз больше в результате т.к. к дельфийским еще и субдшные добавятся. И начальство не поймет чего это я одно поле 2 года не могу в базу добавить, оно же привыкло что в аксе целую прогу можно за день с перерывом на пиво набрать)))

5. Надо же с чего-то начать, может и до "реально" дорасту со временем)))

Добавлено через 7 часов 17 минут
Кажется нашел в чем причина, т.е. почему Post не срабатывал.
Оказывается условие if State in [dsEdit, dsInsert] then никогда вообще не выполняется, пришлось его закоментить и все заработало.
Может подскажите что оно означает это условие и почему не выполняется?

И еще одна заковыка: в книге по Делфи нашел такую строку:

" ...при закрытии набора данных можно выполнить проверку:
if ClientDataSet.UpdateStatus = usMcdified then ShowMessage('Record was changed'); ",

но проблема в том что у меня ClientDataSet.UpdateStatus никогда не равно тем константам, что положено по мурзилке (usUnmodified — запись осталась неизменной; usModif ied — запись была изменена; uslnserted — запись была добавлена; usDeleted — запись была удалена). У меня оно всегда ClientDataSet.UpdateStatus = Inaccessible value. !!!!! Что не так? Строку
if cdsFirst.UpdateStatus = usModified
then showMessage('не сохранено!');
ставлю в FormClose формы где все компоненты клиента. Может видимость строки теряется, когда с нее курсор на форму уходит?
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
29.08.2014, 02:38
Цитата Сообщение от kavasaka Посмотреть сообщение
А чем та СУБД что в примере не реальная?
Она реальная. Но мягко говоря не вполне клиент-серверная. А грубо говоря
А грубо говоря та статья на ДК представляет на самом деле файл-серверную СУБД.
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.08.2014, 04:12
Файл-клиент-серверная СУБД

Добавлено через 20 минут
Цитата Сообщение от kavasaka Посмотреть сообщение
Кажется нашел в чем причина, т.е. почему Post не срабатывал.
Оказывается условие if State in [dsEdit, dsInsert] then никогда вообще не выполняется, пришлось его закоментить и все заработало.
Может подскажите что оно означает это условие и почему не выполняется?
Тоже начинал делать по этому же примеру, так же не работало, и закомментировал, если каждую запись постить оно не нужно

Delphi
1
2
3
4
5
6
7
8
9
10
with (DataSet as TClientDataSet) do
  begin
  //if State in [dsEdit, dsInsert] then
    try
      ApplyUpdates(0);
      Refresh;
    except
      raise EDatabaseError.Create('Ошибка, данные на сервер не отправлены');
    end;
  end;
Добавлено через 9 минут
Цитата Сообщение от kavasaka Посмотреть сообщение
" ...при закрытии набора данных можно выполнить проверку:
if ClientDataSet.UpdateStatus = usMcdified then ShowMessage('Record was changed'); ",
Это делаеться когда не постиш данные сразу, а работаеш с таблицеи и все измененные и добавленные записи скопом хочеш отправить на сервер

Добавлено через 9 минут
Вот та программа которая так организована, это правда не клиентская часть, но она идентична ей. Ей работают, она дорабатываеться, жалоб пока не поступала, ведет себя прилично. Сервер работает с 3-4 машинами, в БД 10 тысячь записей, потом она архивируетья.
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
29.08.2014, 10:57
Цитата Сообщение от northener Посмотреть сообщение
Она реальная. Но мягко говоря не вполне клиент-серверная. А грубо говоря
А грубо говоря та статья на ДК представляет на самом деле файл-серверную СУБД.
У меня сейчас в Аксе тупо файл серверная система и слетает периодически когда много юзеров подключается. Похоже сеть плохая. Так что и что-то не вполне думаю лучше будет)

Добавлено через 15 минут
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
Файл-клиент-серверная СУБД

Добавлено через 20 минут

Тоже начинал делать по этому же примеру, так же не работало, и закомментировал, если каждую запись постить оно не нужно

Delphi
1
2
3
4
5
6
7
8
9
10
with (DataSet as TClientDataSet) do
  begin
  //if State in [dsEdit, dsInsert] then
    try
      ApplyUpdates(0);
      Refresh;
    except
      raise EDatabaseError.Create('Ошибка, данные на сервер не отправлены');
    end;
  end;
Добавлено через 9 минут

Это делаеться когда не постиш данные сразу, а работаеш с таблицеи и все измененные и добавленные записи скопом хочеш отправить на сервер

Добавлено через 9 минут
Вот та программа которая так организована, это правда не клиентская часть, но она идентична ей. Ей работают, она дорабатываеться, жалоб пока не поступала, ведет себя прилично. Сервер работает с 3-4 машинами, в БД 10 тысячь записей, потом она архивируетья.
Данные постятся сразу, т.е. при перехода на следующую запись. Но вот если отредактировать и не перейти, а сразу закрыть форму, то не сохраняется запись. Значит такая проверка нужна и почему не работает я не понял. Есть мысль в паблик переменной хранить состояние сохранено/не_сохранено, но хотелось бы стандартные свойства использовать, а не костыли городить.

К стати! А где это выбрать - чтобы постилось сразу или все скопом?

А что это за программа? Там же исходников нет наверное, тогда зачем она мне? Я ехе-шки не люблю запускать всякие без разбору)))

Добавлено через 10 минут
Еще интересно как сокетный клиент-сервер на обрывы сети и прочие мелкие пакости реагирует. Надо бы поэксперементировать, а то может зря весь этот секас с дельфином))))
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.08.2014, 15:00
Цитата Сообщение от kavasaka Посмотреть сообщение
К стати! А где это выбрать - чтобы постилось сразу или все скопом?
Ручками, при нажатию юзером на кнопочку например
Цитата Сообщение от kavasaka Посмотреть сообщение
Еще интересно как сокетный клиент-сервер на обрывы сети и прочие мелкие пакости реагирует. Надо бы поэксперементировать, а то может зря весь этот секас с дельфином))))
Поэкспериментиру, тоже интересно.
Цитата Сообщение от kavasaka Посмотреть сообщение
Данные постятся сразу, т.е. при перехода на следующую запись. Но вот если отредактировать и не перейти, а сразу закрыть форму, то не сохраняется запись. Значит такая проверка нужна и почему не работает я не понял. Есть мысль в паблик переменной хранить состояние сохранено/не_сохранено, но хотелось бы стандартные свойства использовать, а не костыли городить.
При закрытии формы и надо проверять сохранена запись или нет.
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
30.08.2014, 02:11
Цитата Сообщение от kavasaka Посмотреть сообщение
У меня сейчас в Аксе тупо файл серверная система и слетает периодически когда много юзеров подключается.
И чему удивляешься? Файл-серверная "система" и не предназначена изначально для нескольких юзеров. Только для одного, единственного. Но и несколько пользователей не вызовут сбой, если повезёт. Но рассчитывать на везение не стоит.
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
01.09.2014, 10:53
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
Ручками, при нажатию юзером на кнопочку например
Но сейчас я никакую кнопку не нажимаю, просто перехожу не другую строку и сразу пост срабатывает, я же писал это.

Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
При закрытии формы и надо проверять сохранена запись или нет.
В смысле??? А запись сохранять вообще надо по вашему? А юзера вам не жалко вообще, он же работал старался)))? Короче вопрос не в том НАДО или НЕ НАДО, а в том КАК ЭТО ДЕЛАТЬ. Потому что действительно пост не работает при закрытии формы или даже перехода фокуса с грида (без перехода строки или нажатия кнопки "Пост").

Добавлено через 45 минут
Получается так: Создаем переменную где храним состояние Сохр/НеСохр датасет (т.к. if cdsFirst.UpdateStatus = usModified - похоже фикция какая-то и не работает).
На событие грида OnExit - проверка переменной и cdsFirst.Post если надо,
на событие формы OnClose - то же проверка переменной и cdsFirst.Post если надо (т.к. события эти независимые).
И так для каждого грида-датасета на форме!!!, и чтобы их не перепутать еще, а то ошибка вылазит(( . Фу!

Вопрос: а попроще никак не получится?

Добавлено через 14 минут
Цитата Сообщение от kavasaka Посмотреть сообщение
При закрытии формы и надо проверять сохранена запись или нет.
Извините, Игорь! Не правильно прочитал ваш месадж. Почемуто понял как "не надо проверять")). Наверное не проснулся с утра)
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
01.09.2014, 14:37
Если сделать редактирование не через таблицу, а через форму, то будет срабатывать только при нажатии на кнопку сохранить, и юзеру уже никуда не деться будет.
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
10.09.2014, 17:56
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
Если сделать редактирование не через таблицу, а через форму, то будет срабатывать только при нажатии на кнопку сохранить, и юзеру уже никуда не деться будет
Тоже вариант, но хотелось бы проще. В общем нашел компоненты ehlib_4.2_russian_version вроде как бесплатные, но без наворотов. В ехлибе грид вроде нормально редактирует эдит поля. Но опять же хочется большего)

Теперь очередной косяк - как бы в этот грид всунуть какой-нибудь комбобокс чтобы в каждой строке грида в комбе можно было значения из справочника (т.е. из другого датасета) выбирать, а в датасет уже код вносился автоматом. Уже и DBCtrlGrid с DBLookupComboBox пробовал вместо грида - ничего не получается как это настроить(((. Подскажите порядок как сделать?
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
10.09.2014, 18:40
У самого грида есть такие настройки, если открыть FieldEditor можно для нужного поля выбрать таблицу и поле из которого нужны данные и будет тебе то что ты хочеш
1
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
11.09.2014, 12:15
.
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
У самого грида есть такие настройки...
Нашел только KeyList и PickList. И оно даже работало, что действительно странно для делфи). Но это хорошо когда есть несколько вариантов значения поля и их можно заполнить при программировании и они изменяться/добавляться не будут. Можно наверное даже программно формировать их значения, что выглядит глупо я думаю. А если это еще справочник улиц (`100кило записей), то сомневаюсь что такие тексты вообще программа проглотит.
В стандартном DBgrid вообще один PickLis только.

Похоже надо более новую навороченную версию ехлиба искать. А вот что там за настройки, может их все-таки нет)
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
11.09.2014, 13:11
А как бы еще с DBCtrlGrid и DBLookupComboBox (стандартные) это замутить?


У меня DBCtrlGrid связан с dsSecond. Если перетягиваю на него DBLookupComboBox, он тоже связывается с dsSecond (dataSource). Для DBLookupComboBox:

ListSource Определяет компонент источника данных , связанный с таблицей синхронного просмотра - dsSpPh - ошибка "операция нот еловед в DBCtrlGrid"
ListField Определяет поле или список полей синхронного просмотра в таблице синхронного просмотра - думаю Kod

DataField Определяет поле, которое будет отображаться - надо думаю TIP_ph (ТИП), а пишет ошибку поле нотфаунд
DataSource Определяет источник данных для отображения в списке - dsSpPh - ошибка "дс не может быть изменен"

Что я не так заполняю?
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
11.09.2014, 14:52
Цитата Сообщение от kavasaka Посмотреть сообщение
И оно даже работало, что действительно странно для делфи)
Если тебе ненравиться делфи не пиши в нем, раз он такой плохой и внем у криворуких неработает в действительности то что они хотят не так как должно быть

Добавлено через 3 минуты
DBLookupComboBox не будет работать в DBCtrlGrid и не пытайся даже
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
11.09.2014, 16:23
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
Если тебе ненравиться
Это дело принципа - дельфин должен быть поломан! Я его с уже 10лет пытаюсь одолеть так вот наскоками и забросами. А теперь вдруг что-то заработало и прояснилось - это же круто!) И самое крутое - это сокет компоненты, тут нечего сказать, блеск! Ну а интерфейс вот... разочаровал, ожидал большего.. и как на этом программы пишут! (. Может какие компоненты скучать? Ты я понимаю прогрпммер, чем пользуешься? Или просто приспособился и забил на внешний вид (и на удобство работы для юзера тоже)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2014, 16:23
Помогаю со студенческими работами здесь

Создаю форму. Где разместить функциональную часть
Здравствуйте, вопрос и состоит в том, где правильно размещать функциональную часть. В консоли все понятно: объявления функций и глобальных...

При создании формы, где часть кода разместить
Добрый вечер, подскажите пож-та, задача состоит в том что в форме при вводе в textBox1 и textBox2 чисел m и n, соответсвенно строились...

Написать серверную часть
Добрый день! Есть вот такой вот код серверной части приложения на Питоне: import io import socket import struct from PIL...

Чат - как написать серверную часть
Есть клиент - серверное приложение чат. Сервер принимает сообщения от клиента и рассылает всем остальным. Вопрос - как сделать так, чтоб...

Как реализовать серверную часть голосовалки?
Задача такова: Главная- две фото, выходят рандомно из директории. И под ними опрос, варианта всего два. Нужно сделать : Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru