Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание приложения клиент/сервер с поддержкой БД под IB...объяснение на пальцах  (Прочитано 25593 раз)
0 Пользователей и 11 Гостей смотрят эту тему.
АлексейВалерьевич
Гость
« : 05-05-2010 13:03 » 

Уважаемые! Доброго времени суток...
Студент, пишу дипломную работу..."Мониторинг успеваемости студентов"...типо как Электронный дневник и все шло нормально пока....

Базу данных реализовал в IB Expert. Там несколько таблиц, ну как обычно. Только вот заказчику дипломной работы преспичило реализовать систему в которой студенты пишут тесты на клиентах связанных  в локальной сети...после теста данные о студенте и ОЦЕНКА автоматически должны заноситься в базу которая находиться на сервере (где сидит злой препод!)...
Написание самой программы и реализация тестов и остальных причендал это я сделаю, а вот как мне реализовать доступ клиентов к файлу БД???
Читал много в инете... ни чего не понял! может просто к концу учебы мозГ отказывается работать, может просто ВЕСНА, а может я очень глуп....гугл не спасает! обращаюсь к ВАМ...

в общем вопрос к Вам УВАЖАЕМЫЕ...объясните как мне подключить клиентов к БД которая находиться на сервере...

подключение должно быть как можно проще без использования лишних наворотов...данных там заноситься будет не много поэтому нестандартных ситуаций быть не должно...

P.S. если кому-то покажеться, что я не стал читать и просто начал новую тему...скажу честно ЧИТАЛ...но вообще не понял... а вообще думаю я не один кто сталкнулся с такой проблемой так что тема будет актуальна и далее...

Ну кто  поможет? НАМ начинающим будет ОЧЕНЬ интересно и отрадно если объяснение будет сделано НА ПАЛЬЦАХ...Заранее благодарен!
если что в личку     AlexRochev@mail.ru
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 05-05-2010 14:41 » 

АлексейВалерьевич, самый простой, но самый неправильный способ - указать вместо localhost адрес машины с базой и напрямую соединиться и работать.

Но лучше написать свою программу-клиент, которая будет работать с базой на машине локально, а с удалённой машиной обмениваться по протоколу TCP в своём формате
Записан

АлексейВалерьевич
Гость
« Ответ #2 : 05-05-2010 14:53 » 

Алексей1153++   такой способ был опробован...но без результатно... при включении программы "Клиент" подключение к базе происходило след образом

т.к. клиентов много решино было сделать текстовый файл....в который заносился 0 если БД свободна....и 1 если занята клиент прежде чем подключиться проверял текстовый файл (все это дело в цикле) т.е. если он подключился он заносил туда 1 типо "занято" выполнялся код программы и отключался занеся в текстовый файл 0 типо "свободно" в это время следующие клиенты безприрывно проверяют файл пока не будет 0....

дак вот...локально все работало! но перенести файл на сервер так и не получилось! при записи в DataBase пути к файлу с именем сервера и проверки Test Conect подключения не происходило...Не понял...
было решено что это из-за того что на сервере нет необходмых библиотек...перенесли в  System32  необходимые библиотеки...но так и НЕЗАРАБОТАЛО!!!
 В просмотренных примерах в Инете кстате все делают только Localhost хоть бы один сделал реально по СЕТИ!!!
так что делать дальше  не знаю )

ЕЩЕ предложения!!!
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 05-05-2010 15:02 » 

АлексейВалерьевич, какие 0/1 ? Какой файл ? Ты о чём ? )) Давай, не кашу пиши, а осмысленные предложения.

ЕЩЕ предложения!!!
сильно сомневаюсь...
Записан

АлексейВалерьевич
Гость
« Ответ #4 : 05-05-2010 15:50 » 

""АлексейВалерьевич, какие 0/1 ? Какой файл ? Ты о чём ? )) Давай, не кашу пиши, а осмысленные предложения.""

Я же говорю, что не знаю как организовать доступ к базе... 0/1 в файле это была типо попытка самомстоятельно организовать доступ к одному файлу без появления ошибки "файл занят другим приложением!"

Как вообще делают НОРМАЛЬНЫЕ люди доступ к базе нескольких клиентов одновременно, когда БД лежит на другом компьютере!?
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 05-05-2010 15:53 » 

IB/FB является сервером БД и рассчитан на многопользовательскую работу, т.е. на одновременную работу большего числа пользователей (протокол TCP/IP), где каждый пользователь работает в своей транзакции со своей копией данных. Желательно, но вовсе  не обязательно, чтобы каждый клиент (пользователь) имел свой логин и права на пользование объектами базы. Очень плохо, если все подключаются как "sysdba" с паролем "masterkey". На каждой машине которая будет подключаться к IB/FB должна устанавливаться клиентская часть. т.е. в каталоге Windows\system32 должны иметься клиентские библиотеки GDS32.dll или Fbclient.dll. Подключение осуществляется обычно, т.е. \\имя_сервера(или его IP):путь_к_базе, или \\сервер:alias, но в этом случае alias должен быть прописан в aliases.conf на сервере. Но это все не имеет ни какого отношения к Delphi.

для информации:
https://forum.shelek.ru/index.php/topic,1786.0.html
http://www.ibase.ru
« Последнее редактирование: 05-05-2010 16:06 от Oldy » Записан

С уважением, Oldy.
АлексейВалерьевич
Гость
« Ответ #6 : 07-05-2010 10:32 » 

Oldy.............Спасибо огромное, но это все я уже видел, читал и пытался сделать!
Но видимо что-то делаю не так!
Не получается осуществить связь с клиентской машины с сервером где храниться БД...
Как Вы считаете, а GDS32.dll  библиотеки все одинаковые или есть разные библиотеки с таким назаванием...просто слышал что GDS32.dll есть разные ...различие по крайней мере в размере файла!

Может мне стоит расписать подробно, что я делаю, тогда Вам будет ясно где я совершаю ошибку?
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 07-05-2010 13:30 » 

Конечно эти библиотеки разные, в зависимости от типа и версии применяемого сервера. У FB с версии 1.5 (могу ошибаться) клиентская библиотека - FBClient, а GDS32.DLL вызывает функции из нее.
Цитата
Может мне стоит расписать подробно, что я делаю, тогда Вам будет ясно где я совершаю ошибку?
Желательно, а так-же настройку сети, файерволов и брандмауэров, при наличии таковых. Улыбаюсь
« Последнее редактирование: 07-05-2010 13:31 от Oldy » Записан

С уважением, Oldy.
АлексейВалерьевич
Гость
« Ответ #8 : 07-05-2010 16:42 » 

А как узнать правильные библиотеки у меня или нет?

Если я все правильно понял, то поднимать приложение клиент/сервер желательно прямо на месте т.е. дома сделать и принести в Уч.Заведение не получиться...но близяться праздники, придеться тему прикрыть пока не доберусь до сетки техникума!

Попробую учесть все рекомендации думаю что нить получиться...
Всем спасибо!
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 11-05-2010 10:28 » 

Почему не получится? Дома, когда вы подключаетесь к серверу, используйте IP-соединение к Localhost-у. Это и есть сеть. В этом случае лучше сделать так, чтобы строка подключения загружалась из внешнего файла или ключа реестра, корректируемого отдельно, без перекомпиляции программы, в котором localhost подменяется реальным именем. Можно сделать постоянную строку подключения, но с коррекцией файла \Windows\system32\drivers\etc\hosts. То есть варианты возможны. Что касается библиотек, то их лучше устанавливать из инсталляционного пакета сервера, но это забота вашего сисадмина, думаю.
« Последнее редактирование: 11-05-2010 16:07 от Oldy » Записан

С уважением, Oldy.
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 16-05-2010 10:28 » 

Цитата
Можно сделать постоянную строку подключения, но с коррекцией файла \Windows\system32\drivers\etc\hosts.
Следует заметить, что в этом случае путь к базе на сервере тоже должен быть постоянен
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #11 : 17-05-2010 11:21 » 

АлексейВалерьевич, озвучьте, пожалуйста:

1. версию Дельфи
2. компоненты доступа (IBX, FIB+, родное API, что-то ещё?)

и мы вам расскажем, как в вашем случае увидеть на форме программы данные из базы на удалённом сервере с минимумом телодвижений. а пока - это всё гадание на кофейной гуще.
Записан

АлексейВалерьевич
Гость
« Ответ #12 : 18-05-2010 06:57 » 

в общем так...долго не заходил поэтому прошу прощения за Ваше потраченное время
Версия делфи 7...базу делал в IB Expert   к базе подключаюсь так
1 На Datamodule размещаю компоненты IB DataBase1  ,   IB Transaction1 ,  TDataSource ,    TIBTable
2 В IB DataBase1 указываю Local так как пока база работает на той же машине....
3 Вывод данных производиться в DBGrid и ComboBox.....

2. компоненты доступа (IBX, FIB+, родное API, что-то ещё?) не понял пока точно что имеется ввиду под этим(

что-то еще написать?!
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #13 : 27-05-2010 15:48 » 

АлексейВалерьевич, ну, я тоже не часто захожу Улыбаюсь.

указывать надо не local, а "localhost:c:\mydatabase.gdb". для удалённого клиента - <server_name>:<path>, где server_name - имя сервера или его IP, а path - это путь к базе в обычной нотации windows относительно самого сервера, т.е. это - его путь к базе.

з.ы. а компоненты доступа у вас - IBX.
Записан

Fatal_Error
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 22-06-2010 11:02 » 

клиент-серверная архитектура через текстовый файл=) жесть Класс!
Из собственного опыта:
1) Поднял Firebird сервер, скачать его можно бесплатно.
2) Через IBExpert создал базу данных, с нужными в ней таблицами и т.п.
3) В делфи юзал вкладку на палитре компонентов Interbase, частности для подключения к базе IBDatabase+IBTransaction, для подключения к таблицам Ibtable или IBQuery(если хочешь работать с базой с помошью SQL запросов, если всётаки решишся то рекомендую IBDataSet) а также вкладку Dataacces компонент DataSource.
 :flag-to-hands:По сути если ты написал клиента для локальной версии, то не сложно будит зделать и для многопользовательского варианта разница только в подключении к базе

Цитата
для удалённого клиента - <server_name>:<path>, где server_name - имя сервера или его IP
x77 (c)

Тоесть на примере IBDatabas, в свойстве "databasename" указываешь типо такого 192.168.1.1:c:\Database\test.FDB
 
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 25-06-2010 03:49 » 

Fatal_Error, напрасно иронизируете. Поскольку в Delphi, имеется несколько наборов компонент для работы с  базами, то и способы подключения могут быть разными.
Так для IBX необходим BDE, ADO - OLEDB-провайдер, ODBC -  драйвер ODBC и создание алиаса и наконец можно работать напрямую, через библиотеку gds32.dll. Естественно, что в зависимости от выбранного способа зависит, что  устанавливать и как подключаться на клиентской машине, где нет Delphi.
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #16 : 25-06-2010 08:00 » 

Oldy, одна небольшая поправка. IBX (как и FIB+) как раз и работают через gds32.dll (или fbclient.dll) - они единственные, кто юзает нативное API и БДЕ в этом случае на машине может не быть вообще.
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 25-06-2010 11:28 » new

x77, и что, BDE устанавливать не нужно? В Delphi 5 нужно было обязательно.
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #18 : 25-06-2010 11:37 » 

нет, не нужно.

кстати, и IBX, и FIB+ позволяют использовать TBDECustomDataset и всех его тормознутых потомков, но могут также использовать TIbSql, который унаследован напрямую от TComponent и не использует ни компоненты из Data Access, ни из Data Controls.
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 28-06-2010 10:33 » 

x77, говоря о "прямой работе через gds32.dll",  я имел ввиду API (экспортируемые функции) этой библиотеки, безо всяких компонент.
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #20 : 29-06-2010 09:12 » 

сурово Улыбаюсь
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines