АлексейВалерьевич
Гость
|
|
« : 05-05-2010 13:03 » |
|
Уважаемые! Доброго времени суток... Студент, пишу дипломную работу..."Мониторинг успеваемости студентов"...типо как Электронный дневник и все шло нормально пока.... Базу данных реализовал в IB Expert. Там несколько таблиц, ну как обычно. Только вот заказчику дипломной работы преспичило реализовать систему в которой студенты пишут тесты на клиентах связанных в локальной сети...после теста данные о студенте и ОЦЕНКА автоматически должны заноситься в базу которая находиться на сервере (где сидит злой препод!)... Написание самой программы и реализация тестов и остальных причендал это я сделаю, а вот как мне реализовать доступ клиентов к файлу БД??? Читал много в инете... ни чего не понял! может просто к концу учебы мозГ отказывается работать, может просто ВЕСНА, а может я очень глуп....гугл не спасает! обращаюсь к ВАМ... в общем вопрос к Вам УВАЖАЕМЫЕ...объясните как мне подключить клиентов к БД которая находиться на сервере... подключение должно быть как можно проще без использования лишних наворотов...данных там заноситься будет не много поэтому нестандартных ситуаций быть не должно... P.S. если кому-то покажеться, что я не стал читать и просто начал новую тему...скажу честно ЧИТАЛ...но вообще не понял... а вообще думаю я не один кто сталкнулся с такой проблемой так что тема будет актуальна и далее... Ну кто поможет? НАМ начинающим будет ОЧЕНЬ интересно и отрадно если объяснение будет сделано НА ПАЛЬЦАХ...Заранее благодарен! если что в личку AlexRochev@mail.ru
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
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 хоть бы один сделал реально по СЕТИ!!! так что делать дальше не знаю ) ЕЩЕ предложения!!!
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #3 : 05-05-2010 15:02 » |
|
АлексейВалерьевич, какие 0/1 ? Какой файл ? Ты о чём ? )) Давай, не кашу пиши, а осмысленные предложения. ЕЩЕ предложения!!!
сильно сомневаюсь...
|
|
|
Записан
|
|
|
|
АлексейВалерьевич
Гость
|
|
« Ответ #4 : 05-05-2010 15:50 » |
|
""АлексейВалерьевич, какие 0/1 ? Какой файл ? Ты о чём ? )) Давай, не кашу пиши, а осмысленные предложения.""
Я же говорю, что не знаю как организовать доступ к базе... 0/1 в файле это была типо попытка самомстоятельно организовать доступ к одному файлу без появления ошибки "файл занят другим приложением!"
Как вообще делают НОРМАЛЬНЫЕ люди доступ к базе нескольких клиентов одновременно, когда БД лежит на другом компьютере!?
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #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.htmlhttp://www.ibase.ru
|
|
« Последнее редактирование: 05-05-2010 16:06 от Oldy »
|
Записан
|
С уважением, Oldy.
|
|
|
АлексейВалерьевич
Гость
|
|
« Ответ #6 : 07-05-2010 10:32 » |
|
Oldy.............Спасибо огромное, но это все я уже видел, читал и пытался сделать! Но видимо что-то делаю не так! Не получается осуществить связь с клиентской машины с сервером где храниться БД... Как Вы считаете, а GDS32.dll библиотеки все одинаковые или есть разные библиотеки с таким назаванием...просто слышал что GDS32.dll есть разные ...различие по крайней мере в размере файла!
Может мне стоит расписать подробно, что я делаю, тогда Вам будет ясно где я совершаю ошибку?
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #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
|
|
« Ответ #9 : 11-05-2010 10:28 » |
|
Почему не получится? Дома, когда вы подключаетесь к серверу, используйте IP-соединение к Localhost-у. Это и есть сеть. В этом случае лучше сделать так, чтобы строка подключения загружалась из внешнего файла или ключа реестра, корректируемого отдельно, без перекомпиляции программы, в котором localhost подменяется реальным именем. Можно сделать постоянную строку подключения, но с коррекцией файла \Windows\system32\drivers\etc\hosts. То есть варианты возможны. Что касается библиотек, то их лучше устанавливать из инсталляционного пакета сервера, но это забота вашего сисадмина, думаю.
|
|
« Последнее редактирование: 11-05-2010 16:07 от Oldy »
|
Записан
|
С уважением, Oldy.
|
|
|
Oldy
|
|
« Ответ #10 : 16-05-2010 10:28 » |
|
Можно сделать постоянную строку подключения, но с коррекцией файла \Windows\system32\drivers\etc\hosts.
Следует заметить, что в этом случае путь к базе на сервере тоже должен быть постоянен
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
x77
Модератор
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
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #13 : 27-05-2010 15:48 » |
|
АлексейВалерьевич, ну, я тоже не часто захожу . указывать надо не local, а "localhost:c:\mydatabase.gdb". для удалённого клиента - <server_name>:<path>, где server_name - имя сервера или его IP, а path - это путь к базе в обычной нотации windows относительно самого сервера, т.е. это - его путь к базе. з.ы. а компоненты доступа у вас - IBX.
|
|
|
Записан
|
|
|
|
Fatal_Error
|
|
« Ответ #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
|
|
« Ответ #15 : 25-06-2010 03:49 » |
|
Fatal_Error, напрасно иронизируете. Поскольку в Delphi, имеется несколько наборов компонент для работы с базами, то и способы подключения могут быть разными. Так для IBX необходим BDE, ADO - OLEDB-провайдер, ODBC - драйвер ODBC и создание алиаса и наконец можно работать напрямую, через библиотеку gds32.dll. Естественно, что в зависимости от выбранного способа зависит, что устанавливать и как подключаться на клиентской машине, где нет Delphi.
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #16 : 25-06-2010 08:00 » |
|
Oldy, одна небольшая поправка. IBX (как и FIB+) как раз и работают через gds32.dll (или fbclient.dll) - они единственные, кто юзает нативное API и БДЕ в этом случае на машине может не быть вообще.
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #17 : 25-06-2010 11:28 » |
|
x77, и что, BDE устанавливать не нужно? В Delphi 5 нужно было обязательно.
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #18 : 25-06-2010 11:37 » |
|
нет, не нужно.
кстати, и IBX, и FIB+ позволяют использовать TBDECustomDataset и всех его тормознутых потомков, но могут также использовать TIbSql, который унаследован напрямую от TComponent и не использует ни компоненты из Data Access, ни из Data Controls.
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #19 : 28-06-2010 10:33 » |
|
x77, говоря о "прямой работе через gds32.dll", я имел ввиду API (экспортируемые функции) этой библиотеки, безо всяких компонент.
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #20 : 29-06-2010 09:12 » |
|
сурово
|
|
|
Записан
|
|
|
|
|